2014-07-04 14 views
6

Ho recentemente iniziato a creare una lista To-Do molto semplice in Xcode 5 come mio primo progetto. Dopo aver praticamente completato la progettazione e la costruzione dell'interfaccia utente, ora sono bloccato sull'implementazione dei dati nel mio TableView. Ho aggiunto un elenco di 13 elementi nella mia lista e dato il primo nella lista l'identificatore 'ListPrototypeCell' e tutto il mio codice sembra corretto. Il mio progetto ha 3 questioni identiche:Principiante in Xcode; riutilizzare gli identificatori?

Unsupported Configuration; Prototype cells must have reuse identifiers 

ho giocato in giro con identificatori su ogni articolo, anche se mi è stato detto che non c'è bisogno di utilizzare un identificativo su ogni articolo, e ho ancora ottenere questi errori.

Sono disposto a inviare il mio progetto a chiunque ritenga di essere in grado di aiutarmi a risolvere i problemi, all'occhio addestrato è probabilmente un errore molto semplice che ho commesso.

Apprezzo qualsiasi aiuto!

+1

cool.send a me .. –

+0

Se la mia risposta ha funzionato, don dimentica di accettarlo facendo clic sul segno di spunta verde. – michaelsnowden

risposta

0

Il motivo per cui si sta verificando questo errore è perché alcune delle celle del prototipo non hanno un identificativo di riutilizzo su di esse.

Se non si capisce come/quando utilizzare i prototipi e riutilizzare-id. Si consiglia di leggere: Table View Programming Guide for iOS

2

entra nella tua storyboard, andare al controller della vista, passare alla visualizzazione della tabella, andare al tableviewcell, andare al commissario identità e inserire qualcosa nel campo che dice "riutilizzo Identifier"

si utilizza l'identificatore di riutilizzo per l'inizializzazione celle in base al largo dello stile che sono nella visualizzazione tabella come questa:

UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:@"reuseIdentifier"]; 
+0

Quindi, devo solo assegnare la prima delle mie 13 celle (righe nel mio TableView) all'identificatore "reuseIdentifier"? In caso affermativo, cosa devo fare con le altre 12 righe? nel mio TableView? Ho dato loro anche un identificatore? – user3804662

15

Prova questa Controlla il tuo storyboard e confermare v'è un identificatore di riutilizzo per il vostro prototypeCell,

enter image description here

e utilizzare lo stesso identificatore in

UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:@"sameReuseIdentifier"]; 
+0

Ho svalutato questa bella rappresentazione visiva, ma sarebbe più perfetto se lo screenshot avesse lo stesso identificatore di riutilizzo che detiene normalmente. – holex

+0

Grazie amico @holex –

1

reuseidentifier è un ID da cui è possibile ottenere cellule da esso. se si imposta il riutilizzo "cella" id è possibile accedere a questa cellula nel metodo cellForRowAtIndexPath

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"]; 
if (!cell) { 
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"]; 
} 

il che significa che cellule ottenere da stroyboard con reuseid "cella". nel tuo caso devi scrivere sopra due linee come segue

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:nil]; 
if (!cell) { 
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil]; 
} 

questa linea dimostra che ogni volta nuova cellula sarà alloc e inizializzato e non usare prototipo di cella.

quindi la cella prototipo dallo storyboard non viene mai utilizzata. se vuoi posso darti una demo per menzionare come funziona.

0

So che questo è vecchio ma ho visto questa spiegazione degli identificatori di riutilizzo e mi ha davvero aiutato a capire perché utilizzare gli identificatori di riutilizzo, quindi ho voluto condividere nel caso in cui aiuti gli altri.

"Il riutilizzatoreIdentificatore viene utilizzato per raggruppare insieme righe simili in un UITableView, ovvero righe che differiscono solo per il loro contenuto, ma per il resto presentano layout simili.

A UITableView assegnerà di norma solo gli oggetti UITableViewCell per visualizzare il contenuto visibile nella tabella. Se reuseIdentifier è impostato su un valore non nullo, quando si scorre la vista tabella, UITableView tenterà innanzitutto di riutilizzare un UITableViewCell già assegnato con lo stesso riutilizzatore. Se reuseIdentifier non è stato impostato, l'UITableView sarà costretto a destinare nuovi oggetti UITableViewCell per ogni nuovo elemento che scorre in vista, che potrebbe condurre alle animazioni lag ".

Problemi correlati