¿Cómo puedo agregar / eliminar celdas en una vista de tabla de manera más elegante?

Creo que este es probablemente un problema X Y, así que primero daré información de fondo.

Estoy creando una aplicación que puede mostrar un "formulario". El usuario puede completar el formulario con algunas cosas y crear algunas cosas personalizadas.

Creo que lo más adecuado es usar una vista de tabla para el formulario. Y puedo mostrar todos los cuadros de texto que deben completarse, en cada una de las celdas de la tabla.

Aquí hay una captura de pantalla:

El botón "Agregar nueva entrada" insertará una nueva celda en la parte inferior cuando se toque. Y si desliza una de las entradas hacia la izquierda, obtendrá un botón "Eliminar". Puede usar eso para eliminar la entrada.

Como puede ver, esta vista de tabla necesita agregar y eliminar filas.

Originalmente, estaba usando un cocoapod llamado "TableViewModel" que hace que esto sea muy fácil. Pero luego encontréun error muy grave en la biblioteca, así que ya no quiero usarlo.

Traté de usar la vista de tabladeleteRowsAtIndexPaths yinsertRowsAtIndexPaths métodos Pero si lo hago así:

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)
}

Se producirá una excepción que dice que la vista de tabla es inconsistente con la fuente de datos después de que eliminé una fila. Esto significa que tengo que tener un código para manejar esta inconsistencia. Esto definitivamente hará que mi código sea más difícil de leer.

Lo mismo ocurre con el método de inserción.

Además, necesito hacer un seguimiento de cuántas filas hay en cada sección. Y mi código se vuelve realmente desordenado e imposible de mantener con todo eso.

También he buscado otras bibliotecas, pero todas son realmente raras y no tan sencillas como "tableViewModel". Todos parecen exigirme que cree un modelo para la vista de tabla. No entiendo cómo hacer eso en mi caso. ¡Solo quiero mostrar un montón de campos de texto!

¿Cómo puedo insertar o eliminar filas de manera más elegante? Creo que necesito escribir unextension de la vista de tabla o aprender a escribir un modelo para mi vista de tabla. Pero no puedo hacer ninguno de estos métodos.

Respuestas a la pregunta(3)

Su respuesta a la pregunta