2016-06-22 1 views
12

Ich habe meinen Code swift 3.0 aktualisiert und eine Warnung auf der folgenden Zeile erhalten:Tabellenansicht cellForRowAtIndexPath Warnung

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

Wenn ich jeden der Vorschläge versuchen, die Warnung mit @nonobjc entweder Schweigen oder sie machen eine private Funktion lädt die Tabelle nicht mehr.

Der Fehler lautet:

Instanz Methode 'Tableview (: cellForRowAtIndexPath :)' beinahe entspricht optional Anforderung 'Tableview (: canFocusRowAt :)' des Protokolls 'UITableViewDelegate'

Does Wer weiß, was diesen Fehler verursacht und wie man ihn beheben kann?

Vielen Dank!

Antwort

18

Fügen Sie einfach die Erklärung der Umsetzung UITableViewDataSource Protokoll der Klassendefinition wie folgt aus:

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {} 
5

In swift 3.0 die Signatur für die Datenquelle geändert:

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

Beachten Sie den Unterschied zwischen cellForRowAtIndexPath indexPath: IndexPath und cellForRowAt indexPath: IndexPath

ich ohne Warnungen die neue Methode verwenden, hoffen, dass dies Ihr Problem lösen .

Prost.

+0

Ich habe swift3 noch nicht überprüft, aber wirklich? Diese Änderung macht keinen Sinn. Gibt es einen Grund dafür? Oder einfach um die redundante Verwendung von "indexPath" zu entfernen? – 0yeoj

+2

'Entfernen Sie die redundante' ist in der Tat ein wichtiges Thema in Swift 3. – Moritz

+0

Ich habe diesen Code verwendet und eine saubere getan, aber es immer noch den gleichen Fehler :(Wenn ich den Fehler erweitern gibt es ein paar Indikatoren: 'Move 'tableView (_: cellForRowAt :)' zu einer Erweiterung um diese Warnung zu deaktivieren '&' Requirement 'tableView (_: canFocusRowAt :)' hier deklariert (UIKit.UITableViewDelegate) ' – MattBlack

0

Ich hatte ein ähnliches Problem, und festgestellt, dass, wenn Sie den Raum zwischen dem Unterstrich vor dem Tableview entfernen, aus dieser

func tableView(_ tableView: ... 

dieser

func tableView(_tableView: ... 

seltsamerweise verschwindet die Warnung ...