Custom UITableViewCell mit XIB
Schaute ich mich um und es gibt viele Beispiele, wie dies zu tun, aber ich bin noch nicht bekommen.
Habe ich eine Liste, wo ich bin Auflistung journal-Einträge, die ich anzeigen möchten, ein Titel, ERSTELLUNGSDATUM und einige andere Dinge. Ich will ein XIB-design einer Zelle, so dass UX-designer können es ändern, und pixel schieben.
So, dies ist, wie richte ich die xib:
Dann machte ich eine Klasse, die diese xib-Zell-Punkte an und ich fügte zwei Eigenschaften zu:
@property (atomic, weak) IBOutlet UILabel* titleLabel;
@property (atomic, weak) IBOutlet UILabel* dateLabel;
Ich möchte in der Lage sein, diese wenn ich diese Zellen.
In die Ansicht mit der Tabelle kann ich dies tun:
In der -(void) viewDidLoad
[self.tableView registerNib:[UINib nibWithNibName:@"DreamListTableViewCell" bundle:nil] forCellReuseIdentifier:@"DreamListCell"];
Und in - (UITableViewCell*) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath ich dies tun:
static NSString *MyIdentifier = @"DreamListCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier forIndexPath:indexPath];
Das problem ist, dass die app abstürzt, wenn ich ein setup IBOutlets in der Zelle xib, weil ich denke, der Besitzer ist wirklich null, wenn es initialisiert wird, aber ich bin tatsächlich nicht sicher. Wie könnte ich das ändern dieser zwei Eigenschaften, wenn ich keine Verbindung herstellen können Sie im interface builder? Was sollte ich anders machen?
Ich bin auch nicht mit storyboards. Ich bin mit diesem als Leitfaden: Kapitel 21. Tabelle Ansichten und Ansichten-Sammlung
Ich entschuldige mich für die Art von doppelten Frage, ich bin einfach nicht bekommen es. Halp!
Bearbeiten:
Outlet screenshot:
Edit #2:
Wenn ich entfernen Auslass-verbindungen in der Zelle xib sehe ich diese:
- Haben Sie binden Ihre benutzerdefinierte Klasse, die Zelle in der IB? Sie müssen auch festlegen, dass eine benutzerdefinierte Klasse und nicht
UITableViewCell
imcellForRowAtIndexPath
- Ich cast 'Zelle' zu meiner benutzerdefinierten Zelle-Klasse später auf, stürzt aber vor, dass code ausgeführt wird. Ich set-Dateien, die Eigentümer-und die root-view in der xib-zu-Punkt um meine benutzerdefinierte Zellen-Klasse 🙁
- Wo kommt der Absturz genau und was ist die Ausnahme, sagt?
- Ausnahme: *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<NSObject 0x7fdb02c55cb0> setValue:forUndefinedKey:]: diese Klasse ist nicht die key-value-coding-konform für die Schlüssel titleLabel.'
- Es stürzt auf die dequeueReusableCellWithIdentifier nennen. Und ich bin mir ziemlich sicher, dass der code innerhalb der if-Anweisung wird nie ausgeführt. Es ist immer eine Zelle.
- Hinzufügen screenshot zeigt Steckdosen für Ihr Handy in IB
- Dass der code nie ausgeführt, so ich entfernt es. Es war noch aus einem anderen Versuch. Sorry für die Verwirrung.
- Jedes mal, wenn ich habe die "nicht-Schlüssel-Wert-Codierung kompatibel" crash, es ist, weil ich habe etwas gelöscht aus dem layout, aber es ist immer noch eine Referenz zu es irgendwo. Überprüfen Sie die file ' s owner für gebrochen Steckdosen (Warndreiecke).
- Wenn ich entfernen Auslass-Anschlüssen funktioniert es, sobald ich fügen Sie Sie zurück es stürzt erneut ab. Es scheint sehr ähnlich zu sein zu dem, was Sie sagen, das ist, warum ich denke, der Besitzer ist null.
- Ist der screenshot oben der Auslass-Anschlüssen für
File's Owner
oder für dieDreamListTableViewCell
? - Aha! Ich würde dich umarmen wenn du hier wärst. Ich File ' s Owner Steckdosen, nicht die DreamListTableViewCell. Das habe ich geändert und jetzt funktioniert es! Dank
- Meine Antwort kam ein bisschen zu spät, sorry @pbasdf
- kein problem. Einfach nur froh, dass SpaceBear kam eine Lösung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Don 'T use File' s Owner um die Beziehungen zu IBOutlets. Ändern Sie die Klasse von der Zelle und verwenden, statt (möglicherweise schwierig, um die verbindungen auf einigen Xcode-Versionen, aber ist machbar).