2016-06-22 8 views
12

I zostały zaktualizowane mój kod do szybkiego 3.0 i dostać ostrzeżenie o następującej linii:Table View cellForRowAtIndexPath ostrzeżenie

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

Kiedy próbuję każdej sugestii albo ciszy ostrzeżenie z @nonobjc lub uczynić go funkcja prywatna tabela już się nie ładuje.

Błąd brzmi:

metodę Instancji Tableview (: cellForRowAtIndexPath :) 'prawie pasuje opcjonalny wymóg 'Tableview (: canFocusRowAt :)' protokołu 'UITableViewDelegate'

Does ktoś wie, co powoduje ten błąd i jak to naprawić?

Wielkie dzięki!

Odpowiedz

18

Wystarczy dodać deklarację wdrożenia UITableViewDataSource protokół do definicji klasy jak ten:

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {} 
5

w Swift 3.0 podpisu dla źródła danych zmienione na:

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

zauważyć różnicę pomiędzy cellForRowAtIndexPath indexPath: IndexPath i cellForRowAt indexPath: IndexPath

używam nowej metody bez żadnych ostrzeżeń, nadzieję, że to rozwiąże problem .

Pozdrawiam.

+0

Jeszcze nie sprawdziłem skrótu 3, ale tak naprawdę? Ta zmiana nie ma sensu. Czy istnieje jakiś powód? Lub po prostu usunąć zbędne użycie "indexPath"? – 0yeoj

+2

'remove the redundant' jest istotnie ważnym tematem w Swift 3. – Moritz

+0

Użyłem tego kodu i zrobiłem czysty, ale nadal daje mi ten sam błąd :(Gdy rozszerzam błąd, daje to kilka wskaźników:' Move 'tableView (_: cellForRowAt :)' do rozszerzenia, aby wyciszyć to ostrzeżenie' & "Wymaganie" tableView (_: canFocusRowAt :) 'zadeklarowane tutaj (UIKit.UITableViewDelegate) ' – MattBlack

0

miałem podobny problem i okazało się, że jeśli usunąć przestrzeń pomiędzy podkreślenia przed Tableview, z tego

func tableView(_ tableView: ... 

do tego

func tableView(_tableView: ... 

o dziwo, ostrzeżenie zniknęło ...