Ich verwende eine benutzerdefinierte UITableViewCell
. Wenn ich versuche, meinen Code auszuführen, habe ich diesen Ausnahme-Stack erhalten und kann die Ursache des Problems nicht verstehen:
Bitte beachten Sie, dass ich kein Storyboard verwende.
BEARBEITEN:
Dies ist mein relevanter Code, der das Problem nach dem Breakpoint verursacht:
%Vor%Ich bin nicht ganz sicher, was Sie in Ihrem bereitgestellten Code zu tun versuchen. Sie werden Ihre Feder in tableView: cellForRowAtIndexPath: entladen. Sie können den folgenden Code verwenden:
%Vor%Nun erwartet iOS aufgrund des von Ihnen geposteten Fehlers ein einzelnes Objekt im Array, so dass die for-Schleife möglicherweise unnötig ist. Ich habe das getan, indem ich überprüft habe, ob [nibArray count] == 1 und dann den objectAtIndex: 0 ergattert und ihn der Zelle zugewiesen habe, anstatt zu loopen, und das funktioniert genauso gut. Aber wenn Apple eines Tages beschließt, etwas anderes in dieses nibArray zu stecken, schützt eine for-Schleife davor.
Eine andere Lösung:
Ich hatte UITableViewCell, aber in meinem XIB gab es ein zusätzliches Objekt, ein Label, das ich verlegt hatte.
Überprüfen Sie also Ihr XIB sorgfältig, um sicherzustellen, dass nur ein Objekt in der Objekttabelle auf der linken Seite ist.
In meinem Fall habe ich eine Eigenschaft mit der name-Klasse (zB: @property (strong, nonatomic) IBOutlet UILabel * class) in tableviewcell gesetzt, dies ergibt oben genannten Fehler, dann ist der Name "class" nicht objective c type, change (class = classabc) Behebung des obigen Problems.
Dies ist vielleicht nicht die Antwort auf die Frage des OP, aber ich hatte den gleichen Fehler bei einer anderen Lösung, also beantworte ich diese Frage wegen der Googler, die nachher kommen.
Ich tat eine einzelne UITableViewCell
(eigentlich meine eigene Unterklasse) in meinem XIB - also konnte ich nicht verstehen, warum es nicht funktionierte.
Der Schlüssel scheint zu sein:
Wenn Sie eine XIB-Datei mit einem einzelnen UITableViewCell
oder einer Unterklasse erstellt haben (z. B. wenn Sie auf ein UITableViewCell aus der Bibliothek unten rechts ziehen), zeigt Ihnen der Interface Builder eine Option im Abschnitt "Table View Cell" der Registerkarte "Informationen".
Normalerweise habe ich eine UIView erstellt und ihren Typ in meine UITableViewCell-Unterklasse geändert, so dass ich diese Option nie bemerkt habe.
Es ist dort , dass Sie den Bezeichner (genauso wie in Ihrem registerNib:withReuseIdentifer:
-Aufruf) eingeben müssen.
Frustrierender für mich war, dass es EVERY Zeit nicht nur beim ersten Mal zum Absturz brachte. Seltsam.
Tags und Links objective-c uitableview ios