2011-11-02 4 views
6

Alcuni giorni fa, ho guardato il video tutorial che spiega come utilizzare le celle personalizzate in un UITableViewController. Ho imparato che posso preparare una cella personalizzata direttamente nel generatore di interfacce, quindi ho fatto quanto segue:Come connettere un IBOutlet da un UITableViewController direttamente alla cella personalizzata?

Ho creato un UITableViewController e connetto una classe personalizzata che consiste in un IBOutlet (UILabel). Successivamente, ho attivato lo storyboard e preparato la mia cella personalizzata con un UILabel. Infine collego direttamente l'etichetta da UITableViewController alla mia cella personalizzata.

verifica quanto segue:

Couldn't compile connection: <IBCocoaTouchOutletConnection:0x400724860 <IBProxyObject: 0x4007872c0> => productLabel => <IBUIImageView: 0x401080220>> 

Non è possibile collegare direttamente questo? Nel video tutorial della sezione WWDC 2011 (sessione n. 309) fanno esattamente ciò che ho fatto. Ma c'è un gancio: non mostrano il codice, lo collegano come ho spiegato sopra.

Per una migliore comprensione aggiungo uno screenshot che mostra, quello che mi collego: enter image description here

risposta

3

In realtà,

ho visto il video e non sta collegando il modo in cui lei suggerisce. Stanno collegando dalla cellula al UILabel nella cellula. In altre parole, hanno una sottoclasse di UITableViewCell e connettono tali IBOutlet nell'oggetto personalizzato. Nella sua forma base, puoi creare una classe di celle personalizzata e dichiarare semplicemente l'interfaccia e sintetizzare le proprietà e dovresti essere a posto. Assicurati di aver impostato correttamente l'identificatore e la classe personalizzata nello storyboard.

Spero che questo aiuti.

+0

Sì, questo è corretto. È molto probabilmente una sottoclasse di UITableViewCell. – Simon

+0

Ho guardato di nuovo il video. Hai ragione! Colpa mia. Scusate. La mia prossima domanda sarebbe come posso riempire la cella con i dati (le proprietà spostate in TableCell.h, quindi non posso accedervi in ​​- cellForRowAtIndexPath: (NSIndexPath *) indexPath in UITableViewController). Se si conosce una risposta rapida per questo, siete i benvenuti - altrimenti chiederò a Google, sono sicuro che qualcuno ha chiesto prima, o) –

+0

se qualcuno ha lo stesso problema come ho spiegato nel commento sopra, vedi: http : //www.youtube.com/watch? v = d_kO-J3DYvc –

4

Ho avuto quello che si è rivelato essere lo stesso problema in this question. Come ha detto il rispondente alla mia domanda, il problema è che la cella qui è una cella prototipo. Una connessione tra un elemento di cella e UITableViewController funziona bene per una vista tabella con celle statiche poiché vengono create al momento del lancio, ma non ha senso per le celle prototipo poiché molte di esse probabilmente verranno create ... e non lo fanno esistono finché non viene chiamato cellForRowAtIndexPath. (Questo è un messaggio di errore davvero scarso, e Xcode probabilmente non dovrebbe consentire di effettuare una connessione illegale come questa.)