iOS SDK: Wie bekomme ich eine Zelle in einer Tabellenansicht, die nicht sichtbar ist?

8

Wie bekomme ich die Zelle für einen IndexPath, der momentan nicht in der Tabelle sichtbar ist? (Zelle ist außerhalb des Bereichs)

Code zum Abrufen meiner Zelle:

%Vor%

-cellForRowAtIndexPath... gibt nil zurück, da die Zelle im erforderlichen indexPath außerhalb des Bereichs liegt. Also, wie bekomme ich die richtige Zelle und nicht nil?

    
Daniel Mühlbachler 26.06.2011, 12:50
quelle

5 Antworten

4

So funktioniert das nicht. Sie müssen die Informationen erfassen und speichern, sobald sie eingegeben oder geändert werden. Es kann leicht außer Reichweite geraten und Sie können nicht garantieren, dass Ihre Zelle lange genug lebt. Nun, technisch kann man es behalten (und immer dieselbe Zelle für denselben Indexpfad zurückgeben), aber ich würde dieses Design in Frage stellen.

    
Eiko 26.06.2011, 13:02
quelle
16

Das UITableView behält nur die sichtbaren Zellen bei. Wenn Sie eines brauchen, das nicht sichtbar ist, müssen Sie tableView:cellForRowAtIndexPath: von UITableView dataSource aufrufen. Also, wenn self eine Klasse ist, die dataSource ist:

%Vor%     
Raphael Petegrosso 26.06.2011 12:57
quelle
2

UITableViewCells werden so erstellt, dass sie so wiederverwendet / recycelt werden, dass die Benutzer nicht mehr Zellen als die Anzahl der sichtbaren erstellen müssen. Sie müssen normalerweise nicht auf eine Zelle zugreifen, die nicht sichtbar ist. Es sollte ausreichen, dass Sie auf Ihre Datenquelle zugreifen und dort die entsprechenden Daten abrufen / einstellen. Zellen dienen zum Anzeigen eines Zustands der Datenquelle. Nicht die Datenquelle selbst:)

Bearbeiten:

Sie sagten, Sie brauchen etwas Information (Text) von einer Zelle oben, richtig? Wenn Sie die Methode cellForRowAtIndexPath: verwenden, wird die Zelle neu erstellt, aber Sie erhalten möglicherweise nicht den Text, der sich im Textfeld befand. Der Grund? weil du es wahrscheinlich nicht woanders gespeichert hast. Wenn Sie es gespeichert haben, greifen Sie direkt darauf zu, anstatt durch die Zelle zu gehen.

    
nacho4d 26.06.2011 12:59
quelle
0

Sind die Informationen zum Füllen Ihrer Tabelle aus einem Array? Könnten Sie das nicht direkt aus dem Array mit dem Index 0 herausholen, so wie Ihr cellForRowAtIndexPath diese Zelle vermutlich abrufen und füllen würde, wenn sie angezeigt wird?

    
Dean Davids 26.06.2011 13:05
quelle
0

Weiter zu @ Raphaels Antwort, Hier ist die (funktionierende) swift 3 Lösung:

UITableViewCell cell = self.tableView(self.tableView, cellForRowAt: indexPath)

    
Yonatan Goriachnick 28.09.2017 09:12
quelle

Tags und Links