¿Cuál es la forma más fácil de agregar una fila en un UITableView con una cadena proporcionada por el usuario?

StackOverflow https://stackoverflow.com/questions/1607743

  •  05-07-2019
  •  | 
  •  

Pregunta

Tengo un simple UITableViewController en un UINavigationController que muestra una lista de cadenas de una matriz con el botón Editar / Listo predeterminado en el lado derecho de la navegación bar.

Al presionar el botón Editar, el UITableView se anima correctamente y muestra los iconos menos rojos para eliminar. Al presionar el botón de eliminar, se elimina la fila de la vista de tabla y la matriz (implementada en el método tableView: commitEditingStyle: forRowAtIndexPath: del UITableViewController ).

Ahora me gustaría permitir que el usuario agregue una fila a la vista (y agregue la cadena a la matriz subyacente), pero no estoy seguro de cómo hacerlo. El método commitEditingStyle tiene else if (editingStyle == UITableViewCellEditingStyleInsert) , pero no sé cómo puedo hacer que el usuario ingrese la cadena.

He leído la Guía de programación de Table View (más específicamente el ejemplo de agregar una fila de vista de tabla ), pero esto parece requerir un nuevo UIViewController subclase solo para obtener una cadena del usuario.

¿No hay una manera más fácil?

¿Fue útil?

Solución

Crear otro controlador de vista probablemente sea la forma más fácil a largo plazo. Puedes presentarlo modalmente llamando

SomeViewController* theViewController = [[SomeViewController alloc] init];
[self presentModalViewController: theViewController animated: YES];
[theViewController release];

Cuando theViewController esté listo para desaparecer, puede llamar

[[self parentViewController] dismissModalViewControllerAnimated: YES];

O puede configurar un protocolo para su nuevo controlador de vista para que pueda notificar a su controlador de vista original de la finalización y enviar un valor de vuelta, si desea un NSString de vuelta podría utilizar

@protocol MyViewControllerDelegate
- (void)myViewControllerDelegate: (MyViewController*)myViewController didFinishWithValue: (NSString*)theString;
@end

MyViewController tendría una propiedad delegada

@interface MyViewController
{
    id<MyViewControllerDelegate> delegate;
}
@property(nonatomic,assign) id<MyViewControllerDelegate> delegate;
@end

Si utiliza el método de protocolo, su controlador de vista original adoptará ese protocolo y rechazará la vista modal cuando reciba este mensaje.

Espero que esto ayude, puede parecer un poco complicado al principio, pero hace que recopilar datos sea muy fácil.

Otros consejos

Usted podría usar una clase UIAlertView o similar. Simplemente muestre la vista modal para solicitar la cadena, establezca las devoluciones de llamada correctas y, a continuación, ábrala en su fuente de datos.

También puede insertar una celda con un UITextView y un " Toque para editar " marcador de posición, luego en las devoluciones de llamada textView, elimine textView y muestre la cadena. Más ediciones tendrían que profundizar o hacer otra cosa

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top