Swift 3 Метод просмотра данных UITableView viewForHeaderInSection дает предупреждение

После перехода на Swift 3 у меня есть следующий метод:

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {}

И это дает мне предупреждение

Метод экземпляра 'tableView (tableView: viewForHeaderInSection:)' почти соответствует необязательному требованию 'tableView (_: titleForHeaderInSection:)' протокола 'UITableViewDataSource'

Fix-it предлагает сделать метод приватным или добавить аннотацию @nonobjc. Как разрешить предупреждение?

Ответы

Ответ 1

У меня были подобные предупреждения по всему моему приложению. На самом деле было 2 проблемы. Я исправил все предупреждения либо путем добавления подчеркивания к сигнатуре метода, либо путем перемещения метода к правильному расширению, которое реализует протокол, из которого поступает метод.

Я думаю, что ваша проблема может быть комбинацией обоих.

Подробнее:

1) Вы можете забыть добавить символ "подчеркивания" перед "tableView:...", что делает его другим методом в Swift 3 (в Swift 2.3 это не имеет значения). Поэтому вы должны изменить это:

func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView?

:

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView?

2) Метод tableView(_:viewForHeaderInSection:) является протоколом UITableViewDelegate, но похоже, что компилятор не знает об этом методе - он знает только методы из UITableViewDataSource и пытается сообщить вам одну из них (tableView(_:titleForHeaderInSection:)). Таким образом, вы вообще не реализуете UITableViewDelegate вообще, или вы это делаете, но, возможно, в другом расширении?