it-roy-ru.com

Табличное представление cellForRowAtIndexPath предупреждение

Я обновил свой код до Swift 3.0 и получил предупреждение в следующей строке:

func tableView(_ tableView: UITableView, cellForRowAtIndexPath indexPath: IndexPath) -> UITableViewCell {

Когда я пробую каждое из предложений либо отключить предупреждение с помощью @nonobjc, либо сделать его частной функцией, таблица больше не загружается.

Ошибка гласит:

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

Кто-нибудь знает, что вызывает эту ошибку и как ее исправить?

Большое спасибо!

12
MattBlack

Просто добавьте объявление реализации UITableViewDataSource протокола в определение класса следующим образом:

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {}
20
Steve Alston

В Swift 3.0 подпись для источника данных изменилась на:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell

Обратите внимание на разницу между cellForRowAtIndexPath indexPath: IndexPath и cellForRowAt indexPath: IndexPath

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

Приветствия.

5
MAB

У меня была похожая проблема, и я обнаружил, что если вы удалите пробел между подчеркиванием перед tableView, из этого 

func tableView(_ tableView: ...

к этому

func tableView(_tableView: ...

странно предупреждение уходит ... 

0
mrtnha