iOS SDK: Wie man eine Zelle in einer Tabelle anzeigen, die nicht sichtbar ist?
Wie bekomme ich die Zelle eine indexPath die momentan nicht sichtbar in der Tabelle? (Zelle ist out of range)
Code für das abrufen meiner Zelle:
NSString *name = [[(ELCTextfieldCell *)[tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]] rightTextField] text];
-cellForRowAtIndexPath...
zurück nil
weil die Zelle an der erforderlichen indexPath ist außerhalb des Bereichs. So, wie bekomme ich die richtige Zelle und nicht null?
- Bitte mehr Infos und den code.
- OK, ich habe eine gruppierte Tabelle anzeigen, in denen einige Zellen haben Textfeldern und am Ende gibt es Zellen, die Schaltflächen repräsentiert. Nun habe ich das problem, dass wenn ich mich am Ende der Tabelle sehen meine ersten paar von Zellen ist jetzt außer Reichweite, aber wenn ich auf eine Zelle repräsentiert eine Schaltfläche, muss ich die Informationen am Anfang. Jetzt habe ich versucht: [[(ELCTextfieldCell *)[tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inabschnitt über:0]] rightTextField] text] aber -cellForRowAtIndexPath:... gibt es nil zurück, weil die Zelle liegt außerhalb des Bereichs. So, wie bekomme ich die richtige Zelle (und nicht null)?
- Die Antwort auf Ihre Frage ist, wie nacho4d sagt - nicht verwenden die Zellen, um die Informationen, Holen Sie es von Ihrem zugrunde liegenden Datenquelle. Die umfassendere Antwort ist, dass Sie zu sein scheinen mit einer Tabelle anzeigen zu legen, die für eine Scroll-UI statt mit einem Blick in einen scroller.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist nicht, wie es funktioniert. Sie brauchen, um zu packen und speichern Sie die Informationen, sobald Sie eingegeben bzw. geändert werden. Es kann leicht aus dem Rahmen und Sie können nicht garantieren, Ihre Zelle lebt lange genug. Gut, technisch gesehen kann man daran festhalten (und immer wieder die gleiche Zelle für die gleiche index-Pfad), aber ich würde Fragen, dass design.
Den
UITableView
hält nur die sichtbaren Zellen. Wenn du eine brauchst, die nicht sichtbar ist, müssen Sie rufen Sie dietableView:cellForRowAtIndexPath:
desUITableView
dataSource
. Also, wenn selbst eine Klasse, diedataSource
:UITableViewCells werden wiederverwendet/recycelt in einer Weise, dass der Benutzer nicht brauchen, um zu erstellen, die mehr Zellen als die Anzahl der sichtbaren Elemente.
Sie in der Regel keinen Zugriff auf eine Zelle, die nicht sichtbar ist. Es sollte genug sein, Sie Zugriff auf Ihre datasource-und get - /set-Korrespondent von Daten gibt. Die Zellen sind für das zeigen einige Zustand der datasource. Nicht die datasource selbst 🙂
Edit:
Ihnen gesagt, Sie müssen einige Informationen (text) aus einer Zelle oben rechts? Wenn Sie
cellForRowAtIndexPath:
Methode, die Zelle wird neu erstellt, aber Sie können nicht den text in das textfield. Der Grund? denn wahrscheinlich werden Sie nicht speichern Sie es irgendwo anders. Wenn Sie nicht speichern Sie es dann auf, dass direkt anstatt durch die Zelle.In weiter @Raphael die Antwort, Hier ist der (Arbeits -) swift 3 Lösung:
UITableViewCell cell = self.tableView(self.tableView, cellForRowAt: indexPath)
Ist die Informationen und füllt die Tabelle aus einem array? Konnte Sie nicht ziehen, die direkt das array bei index 0, wie Sie Ihre cellForRowAtIndexPath würde vermutlich abzurufen und füllen Sie die Zelle, wenn es angezeigt wird?