Zunächst habe ich eine Tabellenansicht mit nur einer Schaltfläche zum Hinzufügen.
Wenn der Benutzer diese Taste drückt, muss ich die Zellenanzahl erhöhen und die Zellen wie folgt hinzufügen
Wie man die Zeilenanzahl schreibt und wie man neue Zeilen hinzufügt, indem man auf die Schaltfläche Hinzufügen
klickt// Zeilenanzahl
%Vor%// Inhalt auf Zellen / Zeilen
%Vor%// ### Neue Zeile hinzufügen .. ###
%Vor%Vielen Dank im Voraus ...
In Ihrer Anwendung müssen Sie Werte zu Array hinzufügen, wenn Sie eine Aktion in btn ausführen.
Zum Beispiel zeigen Sie in Ihrer Tabellenansicht NSString in cell.textLABEL.text an. Diese Zeichenfolgen befinden sich in NSMutableArray.
Jetzt, wenn buttonAction aufgerufen wird
in myAction
%Vor%Versuchen Sie diese Logik in Ihrer Anwendung in Bezug auf Ihr Modal.
Ich hoffe, diese Logik wird dir behilflich sein.
UITableView
verfügt über die Eigenschaft, eine Zeile oder einen Abschnitt einzufügen. siehe Apple Doc
Es gibt viele Tutorials dazu. Es gibt 2 häufig zum Hinzufügen / Löschen von Zeile / Abschnitt.
%Vor%Ich habe eine ähnliche Antwort geschrieben, wie man das benutzt: Versteckt die Zellen der Tabellenansicht mit im iPhone ein- / ausschalten
Das erneute Laden der Tabellenansicht jedes Mal, wenn Sie eine Zeile hinzufügen oder entfernen möchten, führt zu einer schlechten Erfahrung für den Benutzer Ihrer Anwendung. Trotz der Tatsache, dass es nicht effizient ist, um diese Aufgabe durchzuführen, hat es auch einige negative Nebenwirkungen - ausgewählte Zeilen bleiben nicht ausgewählt nach dem erneuten Laden und Änderung ist nicht animiert.
UITableView
hat Methoden, die erstellt wurden, um den Inhalt der Tabellenansicht dynamisch zu ändern. Dies sind:
Beachten Sie, dass Sie mit diesen Methoden angeben können, welche Art von Animation bei der Ausführung der angegebenen Operation verwendet wird. Sie können dieses Verhalten nicht erreichen, wenn Sie reloadData
verwenden, um den Inhalt der Tabellenansicht zu ändern.
Darüber hinaus können Sie sogar mehrere Tabellenansichtsoperationen mit zusätzlichen Methoden der Tabellenansicht kombinieren (dies ist nicht notwendig):
beginUpdates endUpdates
Umbruchoperationen, die Sie ausführen möchten, in beginUpdates
und endUpdates
Methoden und Tabellenansicht erstellt eine Animation für alle Operationen, die zwischen beginUpdates
und endUpdates
angefordert wurden ruft so auf, dass der ganze Übergang schöner aussieht als der, der durch ein paar getrennte Animationen erzeugt wird.
Es ist wirklich wichtig, dass der Datenquellenstatus mit dem von UITableView
beibehalten wird. Aus diesem Grund müssen Sie sicherstellen, dass die Datenquelle die richtigen Werte zurückgibt, wenn die Tabellenansicht die angeforderten Operationen ausführt.
Wenn in der Tabellenansicht Operationen ausgeführt werden? Dies hängt davon ab, ob sich Vorgänge in einem Animationsblock befinden, der durch die Methoden beginUpdates
und endUpdates
definiert wird. Wenn ja, startet die Tabellenansicht Operationen nach endUpdates
Methodenaufruf. Andernfalls führt die Tabellenansicht Operationen aus, unmittelbar nachdem der Aufruf zum Einfügen / Verschieben oder Löschen der Methode ausgeführt wurde.
Wenn Sie die Methoden beginUpdates
und endUpdates
verwenden, um Operationen in der Tabellenansicht auszuführen, müssen Sie wissen, dass in dieser Falltabellensicht die angeforderten Operationen der Stapel in einer bestimmten Reihenfolge ausgeführt werden, die nicht der Reihenfolge entspricht der Aufrufe, die Sie für Ihr Tabellenansichtsobjekt ausgeführt haben ( Apple's Dokumentation zu diesem Thema ).
Das Wichtigste, an das Sie sich erinnern sollten, ist das Löschen aller Operationen vor allen Einfügungsoperationen. Außerdem werden Löschoperationen in absteigender Reihenfolge ausgeführt (Operationen für die Indizes 3, 2, 1), wenn die Einfügeoperation in aufsteigender Reihenfolge ausgeführt wird (Operationen für die Indizes 1, 2, 3). Denken Sie daran, dass entscheidend dafür sorgt, dass der Zustand Ihrer Datenquelle mit dem in der Tabellenansicht beibehaltenen übereinstimmt.
Nehmen Sie sich Zeit für die Analyse der Reihenfolge der Vorgänge in der Datenquelle und in der Tabellenansicht, wie im folgenden Beispiel dargestellt.
Letztes Beispiel:
%Vor%Es gibt andere richtige Antworten hier (die Sie lesen sollten, weil sie tiefer gehen), aber ich habe damit über eine Woche gekämpft, nachdem ich alle Lösungen gelesen hatte, die ich finden konnte, weil es keine gab (die ich gefunden hatte) !) mit umfangreichen Beispielen.
Regeln dafür:
1. Änderungen müssen direkt an dem Array vorgenommen werden, das die Elemente enthält, die Sie in UITableView
anzeigen. Wenn Sie einen Wert in UITableViewCell
in der tableView:cellForRowAtIndexPath:
-Methode auf gleiche Werte in self.expandableArray
setzen, müssen Änderungen auch an und vorgenommen werden, damit diese Methoden funktionieren.
self.expandableArray
und [tableView beginUpdates]
vorgenommen werden.
Hier ist ein sehr einfaches Beispiel, das alleine funktionieren würde.
%Vor%Ich hoffe, das spart jemandem viel Zeit und Kopfschmerzen. Wenn Sie dies auf diese Weise tun, müssen Sie nicht die gesamte tableView neu laden, um sie zu aktualisieren, und Sie können eine Animation dafür auswählen. Freier Code, klopf es nicht an.
Sie können einfach ein Objekt im Array hinzufügen und Ihre Tabellenansicht bei einem Klick auf die Schaltfläche erneut laden.
%Vor%Tags und Links objective-c iphone uitableview