UITableView Fügen Sie weitere Zeilen ein, während Sie die bereits abgerufenen Zeilen beibehalten

8

Unten ist die Funktion, die ich verwende, um verschiedene Seiten des Feeds zu erhalten und zu parsen.

%Vor%

Wenn der Benutzer bis zum Ende der Tabellenansicht scrollt, benutze ich die folgende Funktion, um auf die zweite Seite des Feeds zuzugreifen und so weiter, indem ich den Zähler inkrementiere:

%Vor%

Das Problem ist, wenn es nicht unter die bereits abgerufenen Elemente geladen wird, sondern die Tabellenansicht neu lädt, um die neuen Seitenelemente anzuzeigen, und alte verschwinden. Ich möchte neue Seitenelemente unterhalb der vorhandenen laden, um unendliches Scrollen zu haben. Wie kann ich das tun?

    
Jessica 28.12.2012, 11:15
quelle

7 Antworten

2

Es fühlt sich schlecht an, Ihre eigene Frage zu beantworten, aber indem ich Hilfe von einem anderen Forum nahm, war ich in der Lage, die Antwort herauszufinden.

Der Tableview-Controller war nicht synchron mit dem veränderbaren Array, also habe ich einen anderen erstellt und beide Arrays angehängt.

Schritt1: Ich habe eine Eigenschaft erstellt

%Vor%

Schritt2: Initialisierung des Arrays in ViewDidLoad vor dem Aufruf von fetchEntries

%Vor%

Schritt3: In connectionDidFinishLoading habe ich ein neues Array 'moreItems' an die vorherigen Array 'items' angehängt

%Vor%

Schritt 4: Die Datenquelle in numberOfRowsInSection wurde von

geändert %Vor%

zu neuem Array

%Vor%

und dann in cellForRowAtIndexPath das neue Array

%Vor%     
Jessica 30.12.2012, 05:48
quelle
1

Sie sollten insertRowsAtIndexPaths: withRowAnimation: method von UITableView verwenden.

Eine Sache, die Sie beachten müssen, ist, dass wenn Sie diese Methode verwenden, Zahlenzeilen, die um tableView:numberOfRowsInSection neu abgestimmt wurden, gleich number_of_existing_rows + number_of_newly_inserted_rows

sein sollten     
Atif 28.12.2012 11:26
quelle
1

Nachdem Sie den neuen Feed für die nächste Seite abgerufen haben, rufen Sie die Objekte in einem Array ab. Fügen Sie diese Objekte aus diesem Array zu Ihrem Datenquellenarray hinzu. Fügen Sie nun wie folgt Zeilen in die Tabelle ein:

%Vor%

Dabei steht "indexPathsToInsert" für ein Array von NSIndexPath-Objekten, die mit der letzten Zeile in Ihrer Tabelle beginnen und indexPaths für Ihre neuen Objekte enthalten.

Hoffe, das hilft.

    
Nameet 28.12.2012 11:48
quelle
1

Hallo,

Erstellen Sie eine for-Schleife mit dem Startindex (Anzahl der Objekte in der Datenquelle) und der Anzahl der hinzuzufügenden Objekte (Anzahl), erstellen Sie das Array der Indexpfade und rufen Sie insertRowsAtIndexpaths: withRowAnimation auf. Ich hoffe, der Code hilft dir.

%Vor%     
purnachandra.tech 28.12.2012 11:49
quelle
1

Wenn Ihr Array ein neues Objekt erhält, rufen Sie dieses

auf %Vor%

Hier ist YourDataSourceArray das Array, aus dem Sie die Zeilenzahl / Daten für die Tabellenansicht festlegen. YourTableView ist der Name Ihres TableView-Objekts.

    
spider1983 28.12.2012 11:19
quelle
0

Dies kann daran liegen, dass Sie, wenn Sie Ihre Daten vom Webservice beziehen, diese in das Array, das Sie zum Füllen der Tabelle verwenden, einfügen. Dadurch haben Sie nur neue Daten, was Sie tun müssen Hängen Sie die neuen Daten an das Array an (Make it Mutable Array und fügen Sie neue Daten an) und verwenden Sie einfach die folgende Zeile

%Vor%

Hoffe, das wird dir helfen.

    
superGokuN 28.12.2012 11:23
quelle
0

Anstatt zum Herunterladen nach unten zu scrollen, verwenden Sie besser die letzte Zeile der Tabellenansicht als "Weitere Elemente laden". Wenn der Benutzer diese Zeile ausgewählt hat, rufen Sie den neuen Feed ab und laden Sie die Tabellenansicht neu.

Und ich habe auch einen Zweifel in Ihrem Code, jedes Mal in Getfeed-Methode, erstellen Sie Array
Gesammelte Daten. Ich bezweifle, dass Sie diese Daten nicht an Tabellen-Datenquellen anhängen, was dazu führen kann, dass Sie nur aktuelle Feed-Daten in der Tabellenansicht anzeigen. Bitte überprüfen Sie

    
purnachandra.tech 28.12.2012 11:27
quelle