2014-07-04 9 views
6

Ich habe kürzlich begonnen, eine sehr einfache To-Do-Liste in Xcode 5 als mein erstes Projekt zu erstellen. Nachdem ich das UI-Design und den Build praktisch fertiggestellt habe, bin ich jetzt auf der Implementierung von Daten in meinem TableView festgefahren. Ich habe eine Liste von 13 Elementen in meiner Liste hinzugefügt und dem ersten in der Liste den 'ListPrototypeCell'-Identifikator gegeben und mein gesamter Code scheint korrekt zu sein. Mein Projekt hat drei identische Probleme:Anfänger in Xcode; Kennungen wiederverwenden?

Unsupported Configuration; Prototype cells must have reuse identifiers 

Ich habe mit Kennungen für jedes Objekt herumgespielt, obwohl ich gesagt wurde, ich brauche nicht eine Kennung für jedes Objekt zu verwenden, und ich immer noch diese Fehler erhalten.

Ich bin bereit, mein Projekt auf jemanden zu senden, dass sie denkt, dass die Lage sein, mir um die Probleme zu helfen, zu lösen, zu dem geschulten Auge es wahrscheinlich ein sehr grundlegenden Fehler, die ich gemacht habe.

Ich freue mich über jede Hilfe!

+1

cool.send an mich .. –

+0

Wenn meine Antwort funktioniert, don Vergessen Sie nicht, es zu akzeptieren, indem Sie auf das grüne Häkchen klicken – michaelsnowden

Antwort

0

Der Grund, warum Sie diesen Fehler erhalten, ist, weil einige Ihrer Prototyp-Zellen keine Wiederverwendungs-ID auf ihnen haben.

Wenn Sie nicht verstehen, wie/wann Prototypen und Wiederverwendung-IDs verwenden. Sie sollten lesen: Table View Programming Guide for iOS

2

Gehen Sie in Ihr Storyboard, gehen Sie zum View-Controller, gehen Sie zur Tabellenansicht, gehen Sie zur TableViewCell, gehen Sie zum Identity Inspector, und geben Sie etwas in das Feld "Reuse Identifier"

Sie verwenden die Wiederverwendung Bezeichner für Zellen basiert weg von der Art sind sie in der Tabellenansicht wie folgt initialisiert:

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

Also gebe ich nur die erste meiner 13 Zellen (Zeilen in meinem TableView) die "reuseIdentifier" Kennung? Wenn ja, was mache ich mit den anderen 12 Zeilen in meinem TableView? Gebe ich ihnen auch einen Bezeichner? – user3804662

15

Versuchen Sie, diese Überprüfen Sie Ihre Storyboard und bestätigen gibt es eine Wiederverwendung Bezeichner für Ihre prototypeCell,

enter image description here

und verwendet die gleiche Kennung in Ihrem

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

Ich verbesserte diese nette Sichtdarstellung, aber es wäre perfekter, wenn das screenshot den gleichen Wiederbenutzungsidentifikator behalten würde, wie es normalerweise hält. – holex

+0

Dank dude @holex –

1

reuseidentifier ist eine ID, von dem Sie Zelle von ihm bekommen können. wenn Sie id „Zelle“ gesetzt wiederverwenden können Sie diese Zelle in cellForRowAtIndexPath Methode zugreifen

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

die diese von stroyboard mit reuseid „Zelle“ erhalten Zelle bedeutet. in Ihrem Fall müssen Sie über zwei Zeilen schreiben, wie

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

diese Linie, dass alloc und initialisiert wird jedes Mal neue Zelle zeigt folgen und es Prototyp Zelle nicht verwendet.

so nie Prototypzelle aus Storyboard wird verwendet. Wenn Sie wollen, kann ich Ihnen eine Demo geben, um zu erwähnen, wie es funktioniert.

0

Ich weiß, das ist alt, aber ich sah diese Erklärung der Wiederverwendung Identifikatoren und es hat mir wirklich geholfen zu verstehen, warum die Wiederverwendung Bezeichner verwenden, also wollte ich für den Fall, teilen sie anderen hilft.

„The reuseIdentifier zu gruppieren ähnliche Reihen in einer UITableView verwendet wird, d.h. Zeilen, die nur in ihrem Inhalt unterscheiden, aber sonst ähnliche Layouts haben.

Ein UITableView weist normalerweise nur genügend UITableViewCell-Objekte zu, um den in der Tabelle sichtbaren Inhalt anzuzeigen. Wenn reuseIdentifier auf einen Nicht-Null-Wert gesetzt ist, versucht UITableView bei der Tabellenansicht zunächst, eine bereits zugewiesene UITableViewCell mit demselben Wiederverwendungsidentifikator erneut zu verwenden. Wenn "reuseIdentifier" nicht festgelegt wurde, wird UITableView gezwungen, neue UITableViewCell-Objekte für jedes neue Element zuzuweisen, das in den Bildlauf scrollt und möglicherweise zu Verzögerungen führt. "