2016-06-22 36 views
12

ho aggiornato il mio codice per SWIFT 3.0 e ottenere un avvertimento sulla riga seguente:Table View cellForRowAtIndexPath avvertimento

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

Quando provo ciascuno dei suggerimenti per sia il silenzio l'avviso con @nonobjc o ne fanno un funzione privata la tabella non carica più.

L'errore si legge:

metodo istanza 'tableView (: cellForRowAtIndexPath :)' quasi partite requisito opzionale 'tableView (: canFocusRowAt :)' di protocollo 'UITableViewDelegate'

fa qualcuno sa cosa causa questo errore e come risolverlo?

Grazie mille!

risposta

18

Basta aggiungere la dichiarazione di attuare UITableViewDataSource protocollo per la definizione della classe in questo modo:

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {} 
5

a Swift 3.0 la firma per l'origine dati cambiato in:

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

notare la differenza tra cellForRowAtIndexPath indexPath: IndexPath e cellForRowAt indexPath: IndexPath

sto usando il nuovo metodo, senza alcun avviso, spero che questo risolverà il vostro problema .

Cheers.

+0

Non ho ancora controllato swift3, ma davvero? Questo cambiamento non ha alcun senso ... C'è qualche motivo dietro? O solo per rimuovere l'uso ridondante di "indexPath"? – 0yeoj

+2

'remove the redundant' è davvero un tema importante in Swift 3. – Moritz

+0

Ho usato quel codice e ho fatto un clean ma continua a darmi lo stesso errore :(Quando espongo l'errore ci danno un paio di indicatori:' Move 'tableView (_: cellForRowAt :)' a un'estensione per silenziare questo avviso' e 'Requirement 'tableView (_: canFocusRowAt :)' dichiarato qui (UIKit.UITableViewDelegate)' – MattBlack

0

ho avuto un problema simile, e ha scoperto che se si rimuove lo spazio tra la sottolineatura prima tableView, da questa

func tableView(_ tableView: ... 

a questo

func tableView(_tableView: ... 

stranamente l'avviso scompare ...