xcode tableview nachladen
In meiner app habe ich eine tableview-gefüllt mit Werten aus einem NSMutableArray. Diese mutable-array Hinzugefügt wird, in einem separaten viewcontroller, und so habe ich die Daten neu laden.
Dies ist wahrscheinlich eine sehr einfache Frage, aber ich lese 15+ Beiträge und keiner von Ihnen scheinen zu Adresse xcode 4.2 und wo Sie genau stellen Sie [self.tableView reloadData]. Wo genau soll diese Methode gestellt werden? Wenn ich habe versucht, indem es an verschiedenen Orten in der tableviews source-code, der tableview initialisiert für die erste Zeit ohne Werte.
Oder sollte es in der anderen viewcontrollers-code, in dem Fall, wie kann ich die Referenz der bestimmten Instanz von meinem UItableview eine Unterklasse, die verwendet wird?
Vielen Dank im Voraus.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist nichts besonderes über Xcode 4.2, der sollte einen Unterschied machen hier, so sollten Sie die Aufmerksamkeit auf andere Quellen, die Sie gefunden haben, auch wenn Sie beziehen sich auf andere Versionen von Xcode.
Es nicht
[self.tableView reloadData]
genau. Senden Sie die Tabelle view-Objekt diereloadData
Nachricht. Wie Sie access-Tabelle Ansicht-Objekt - durch eine Eigenschaft auf sich selbst, durch eine Instanz-variable, die durch eine Eigenschaft in eine andere Klasse, etc. - ist bis zu Ihnen.Wenn Sie bereits die
tableView
- Eigenschaft festgelegt, dann wird der einfachste Weg das laden der Daten aus einer anderen view-controller ist, senden Sie einfach die Tabelle view-Objekt diereloadData
Nachricht direkt. So, zum Beispiel, wenn Sie eine Methode inViewControllerFoo
hat einen Zeiger aufViewControllerBar
genanntbar
und weiß, es sollte laden Sie Ihre Tabelle anzuzeigen, könnte es nennen[bar.tableView reloadData]
.Wenn Sie nicht über die Eigenschaft eingerichtet ist, können Sie Sie selbst erstellen, oder Sie erstellen einen
reloadData
- Methode der view-controller halten der Tabelle anzeigen, die nicht im Auftrag von anderen view-Controller.Allerdings sind diese Ansätze mix-up-Logik und Präsentation, die in der Regel eine ziemlich schlechte Architektur. Wenn man view-controller weiß, dass ein anderer view-controller sollte die Aktualisierung Ihrer anzeigen, dann sind die Chancen, Sie werden sollten, factoring, einige von dieser Logik zu einer Dritten Klasse, die unabhängig von einer bestimmten view-controller. Diese Dritte Klasse kann Benachrichtigungen übermitteln oder Ihre view-Controller kann einen Listener für änderungen an seinen Zustand über KVO.
Sind Sie mit einem Navigations-controller? Ist der view-controller, das füllt den array-Daten geschoben ontop der Tabelle anzeigen? Wenn also die reloadData Anruf in viewwillappear, weil diese nicht aufgerufen, wenn eine Untersicht der navigation-controller ist, tauchte ab und der Ansicht Tabelle ist nun wieder sichtbar.
Sie in der Regel rufen reloadData in der "viewDidLoad" - Methode der viewController, der gesetzt ist, als die dataSource und delegate des tableView. Aber es spielt wirklich keine Rolle viel, so stellen Sie sicher, dass Sie call-reloadData jedes mal nach änderungen des datamodel (Ihr NSMutableArray).
Ausgehend von Ihrer Beschreibung, die reloadData ist nicht die wahrscheinlichste Ursache für Ihr problem. Überprüfen Sie, dass Sie Ihre viewController als die dataSource-Eigenschaft des tableView.
Auch, Sie in der Regel verwenden Sie eine Daten-Quelle, denn ich habe hier unterstellt, eher als Unterklassen der TableView, wie Sie scheinen, zu tun.
nachdem Sie [tableView reloadData];
tableView lädt und delegieren-Funktion, um den Inhalt der Tabelle
wenn Sie [tableView reloadData] löschen Sie Ihre Tabelle
dann überprüfen Sie die
müssen Sie Lesen die falschen Werte dort
delegate
unddataSource
Eigenschaften richtig eingestellt?Sollten Sie überprüfen, ob das array korrekt umgesetzt werden. Versuchen Sie, melden Sie es, wenn Sie in der Ansicht, zum Beispiel in der Methode viewWillAppear.
In der Regel setzen Sie die
[self.tableView reloadData]
im-viewWillAppear
Methode.