UITableView reloadData nicht scheinen verursachen cellForRowAtIndexPath: genannt zu werden
Ich bin derzeit am schreiben einer app, mit storyboards, enthält zwei UITableView
s innerhalb des gleichen Fensters.
Wenn die Anwendung ausgeführt wird, die erste UITableView
wird aufgefüllt mit einer Anzahl von "Registration Numbers".
Wenn der Benutzer tippt auf eine Zelle, dann die zweite UITableView
soll, füllen Sie mit Details über die ausgewählte Zelle.
Beim Tippen eine Zahl in der ersten Tabelle habe ich eine Methode, die Laufwerke die:
[mySecondTableView reloadData]
Was es tut. Ich bin unter dem Eindruck, dass beim Aufruf der reloadData
Befehl, es sollten dann rufen Sie beide:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
und
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
Den ersten feuert, aber der zweite nicht.
Ich habe sowohl die data-source und delegate WLAN selbst.
Ich nicht sicher bin, was ich bin fehlt.
Sind beide Methoden gemeint, um das Feuer?
- Es ist auch gar nicht sicher, dass iOS 7 ist auch hier relevant; diese Methoden waren in Cocoa Touch auch vor, dass die system-version.
- Was ist numberOFRowsInSection zurück? Ist es 0?
- rdelmar - Nein, es sind 16 Objekte zu zeigen, und es gibt so viele.
- Was ist die zweite Tabelle Ansicht
frame
,contentSize
, undsuperview
? - Können Sie uns zeigen, mehr code? Gibt es einen Delegierten und/oder der Datenquelle für die beiden tableViews. Wenn das letztere der Fall, könnte die Ursache Ihres Problems.
- Warum sollte es DIE ZELLE, auf die SIE MÖGLICHERWEISE NICHT AUF DEM BILDSCHIRM ANGEZEIGT WERDEN
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Dinge wie diese passieren mir, es ist in der Regel, weil ich rufe
-reloadData
außerhalb der Haupt-thread.Nach reloadData, versuchen Sie dies:
Ich gefunden, wenn sich die Daten ändern, ist subtil, der Tabelle scheint zu optimieren, entfernt die Notwendigkeit, zu aktualisieren.
Spitzen Antworten nicht lösen mein Tabellenansicht problem. Es war noch aufrufen
jedoch Zelle zeichnen-Methode war nicht gefeuert:
Mein problem war, dass(aufgrund meines Fehlers natürlich) Ansicht Tabelle Höhe 0 war. So wie die Tabelle zeigt nur Zellen, die sichtbar sind, es nie versucht zu Anzeige einer Zelle. Wenn ich die geänderte Höhe der Zeichnung cell-Methode gestartet, um das Feuer wieder.
Botom line überprüfen Sie Ihre Tabelle, Rahmen und sicherzustellen, dass Sie haben nicht-null-Werte für Breite und Höhe!
Ich nur anfallen, das gleiche Problem. Habe ich eine
performSelectorOnMainThread
eine Methode aufrufen, die ruft dann diereloadData
. Dies war notwendig, da war ich versucht, zu aktualisieren, die außerhalb der Haupt-thread, wie vorgeschlagen, durch hatfinch.Stellen Sie sicher, Sie rufen performSelectorOnMainThread mit waitUntilDone:NEIN, sonst können Sie immer noch das gleiche Problem
Fand eine weitere Ursache der cellForRowAtIndexPath nicht genannt.
Wenn
numberOfRowsInSection
gibt 0 zurück,cellForRowAtIndexPath
werden nicht genannt.Dies geschah in meinem Fall wegen eines NSArray de-zugewiesen, während ein view-controller ändern und den sich daraus ergebenden zählen (da war es nil) 0 zurückgeben.
Nach schlug mit meinem Kopf gegen eine Wand für die Tage, dies ist mein problem gelöst:
Gesetzt, die Alle Ausnahmen Haltepunkt und sehen, wenn Sie eine out of bounds exception in Ihrer Datenquelle. Ohne Einstellung der Haltepunkt kein Absturz und der tableview werden einfach nicht neu zu laden.
Ausführliche Antwort hier
War ich debugging ein ähnliches Problem für Stunden, bevor ich bemerkte, dass meine
.reloadData()
Aufruf ausgeführt wurde durch einen Rückruf von einer vorherigen Instanz des view-Controllers.Also mein Haltepunkt war das schlagen auf der
.reloadData()
Anruf von meinem alten Instanz der view-controller, aber die neue Instanz wurde tatsächlich gezeigt, war nicht nachladen, weil es nicht die war die Ausführung der Rückruf, der aufgerufen.reloadData()
.