Ich schreibe gerade eine App mit Storyboards, die zwei UITableView
s im selben Fenster enthält.
Beim Ausführen der Anwendung wird die erste UITableView
mit einer Anzahl von "Registrierungsnummern" gefüllt.
Wenn der Benutzer auf eine Zelle klickt, sollte das zweite UITableView
mit Details über die ausgewählte Zelle gefüllt werden.
Beim Tippen auf eine Zahl in der ersten Tabelle habe ich eine Methode, die folgendes antreibt:
%Vor% Was es tut. Ich habe den Eindruck, dass beim Aufruf des Befehls reloadData
dann beide aufrufen sollten:
und
%Vor%Das erste Feuer, aber das zweite nicht. Ich habe sowohl die Datenquelle als auch den Delegaten mit self verdrahtet.
Ich bin mir nicht sicher, was ich vermisse.
Sollen beide Methoden ausgelöst werden?
Gezeigte Antworten lösen mein Problem mit der Tabellenansicht nicht. Es rief immer noch
an %Vor%Allerdings wurde die Zellenzeichnungsmethode nicht ausgelöst:
%Vor%Mein Problem war, dass (wegen meines Fehlers natürlich) die Tabellenansichtshöhe 0 war. Da die Tabelle nur Zellen anzeigt, die sichtbar sind, versucht sie nie, eine Zelle anzuzeigen. Als ich den Höhenwert änderte, begann die Zeichenzellenmethode erneut zu feuern.
Botom-Linie Überprüfen Sie Ihren Tabellenrahmen und stellen Sie sicher, dass Sie Breiten- und Höhenwerte ungleich null haben!
Ich habe gerade das gleiche Problem gemacht. Ich habe eine performSelectorOnMainThread
verwendet, um eine Methode aufzurufen, die dann reloadData
aufruft. Dies war notwendig, da ich versuchte, außerhalb des Hauptthreads zu aktualisieren, wie es von Hatfinch vorgeschlagen wurde.
Stellen Sie sicher, dass Sie performSelectorOnMainThread mit waitUntilDone aufrufen: NO, andernfalls haben Sie möglicherweise immer noch das gleiche Problem
Eine andere Ursache für cellForRowAtIndexPath wurde nicht gefunden.
Wenn numberOfRowsInSection
0 zurückgibt, wird cellForRowAtIndexPath
nicht aufgerufen.
Dies passierte in meinem Fall, weil ein NSArray während einer Änderung des View-Controllers und seiner Folgezählung (da es null war), die 0 zurückgab, rückgängig gemacht wurde.
Nachdem ich meinen Kopf tagelang gegen eine Wand geschlagen hatte, löste das mein Problem:
Legen Sie den Haltepunkt Alle Ausnahmen fest und überprüfen Sie, ob in Ihrer Datenquelle eine Ausnahmebedingung auftritt. Ohne den Haltepunkt zu setzen, gibt es keinen Absturz und die Tabellenansicht wird einfach nicht neu geladen.
Volle Antwort hier
Ich habe ein ähnliches Problem stundenlang behoben, bevor ich bemerkte, dass mein .reloadData()
-Aufruf durch einen Rückruf einer vorherigen Instanz des View-Controllers ausgeführt wurde.
Also hat mein Haltepunkt den .reloadData()
Aufruf meiner alten Instanz dieses Ansichtscontrollers getroffen, aber die neue Instanz, die tatsächlich angezeigt wurde, wurde nicht neu geladen, weil sie nicht die Callback-Instanz namens .reloadData()
war .
Tags und Links uitableview ios cocoa-touch