Wie kann ich Zellen in einer Tabellenansicht eleganter hinzufügen / entfernen?

Ich denke, dies ist wahrscheinlich ein XY-Problem, daher gebe ich zuerst einige Hintergrundinformationen.

Ich erstelle eine App, die ein "Formular" anzeigen kann. Der Benutzer kann das Formular mit einigen Dingen ausfüllen und einige benutzerdefinierte Dinge erstellen.

Ich denke, am besten ist es, eine Tabellenansicht für das Formular zu verwenden. Und ich kann in jeder Tabellenzelle alle Textfelder anzeigen, die ausgefüllt werden müssen.

Hier ist ein Screenshot:

Die Schaltfläche "Add New Input" (Neue Eingabe hinzufügen) fügt eine neue Zelle am unteren Rand ein, wenn Sie darauf tippen. Und wenn Sie einen der Eingänge nach links wischen, erhalten Sie eine Schaltfläche "Löschen". Damit können Sie die Eingabe löschen.

Wie Sie sehen, muss diese Tabellenansicht Zeilen hinzufügen und löschen.

Ursprünglich habe ich einen Cocoapod namens "TableViewModel" verwendet, was dies sehr einfach macht. Aber dann fand icha wirklich schwerer Fehler in der Bibliothek, damit ich es nicht mehr verwenden möchte.

Ich habe versucht, die @ der Tabellenansicht zu verwendedeleteRowsAtIndexPaths undinsertRowsAtIndexPaths Methoden. Aber wenn ich es so mache:

override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    return 1
}

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return 1
}

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = UITableViewCell()
    cell.textLabel?.text = "Hello"
    return cell
}

// I use motionEnded here because I don't want to add a button or anything just to test this
override func motionEnded(motion: UIEventSubtype, withEvent event: UIEvent?) {
    tableView.deleteRowsAtIndexPaths([NSIndexPath(forRow: 0, inSection: 0)], withRowAnimation: .Fade)
}

Es wird eine Ausnahme geben, die besagt, dass die Tabellenansicht nicht mit der Datenquelle übereinstimmt, nachdem ich eine Zeile gelöscht habe. Das bedeutet, dass ich Code haben muss, um diese Inkonsistenz zu behandeln. Dadurch wird es auf jeden Fall schwieriger, meinen Code zu lesen.

Das Gleiche gilt für die Einfügemethode.

Auch muss ich verfolgen, wie viele Zeilen es in jedem Abschnitt gibt. Und mein Code wird bei all dem wirklich chaotisch und nicht mehr zu pflegen.

Ich habe auch nach anderen Bibliotheken gesucht, aber sie sind alle sehr seltsam und nicht so einfach wie "tableViewModel". Sie scheinen alle zu verlangen, dass ich ein Modell für die Tabellenansicht erstelle. Ich verstehe nicht, wie ich das in meinem Fall machen soll. Ich möchte nur ein paar Textfelder anzeigen!

Wie kann ich eleganter Zeilen einfügen oder löschen? Ich denke, ich muss entweder ein @ schreibextension der Tabellenansicht oder lernen, ein Modell für meine Tabellenansicht zu schreiben. Aber ich kann keine dieser Methoden anwenden.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage