2009-06-07 9 views

Respuesta

15

Mi sugerencia es no utilizar la costumbre UITableViewCell s. Solía ​​hacerlo a tu manera, pero hay una manera mucho mejor. Utilice la propiedad accessoryView del UITableViewCell, a la que puede asignar una vista arbitraria, como UITextField o UISwitch. Se muestra exactamente como lo haría en la aplicación de Configuración.

Entonces, cuando se necesita para acceder a ella, sólo tiene que utilizar

NSString *text = ((UITextField *)cell.accessoryView).text; 

Sin embargo, hay que tener cuidado sobre la configuración de las células y acceder a sus valores. Si alguna celda sale de la pantalla, se eliminará y no podrá acceder al campo de texto. Lo que quiere hacer al configurar su celular es:

cell.accessoryView = nil; //Make sure any old accessory view isn't there. 
if (/*cell needs text field*/) { 
    UITextField *textField = [[[UITextField alloc] initWithFrame:frame] autorelease]; 
    textField.text = savedValue; 
    cell.accessoryView = textField; 
    [textField addTarget:self action:@selector(textChanged:) forControlEvents:UIControlEventValueChanged]; 
} 

... 

- (void) textChanged:(UITextField *)source { 
    self.savedValue = source.text; 
} 
+0

¿Qué sucede si tengo más de una celda con un campo de texto (como la vista de agregar contacto en la aplicación de contactos)? ¿Debo agregar un método diferente para cada una de las vistas? – Rodrigo

+0

Aquí se encuentra http://stackoverflow.com/questions/3572377/iphone-how-to-read-the-data-in-uitableview/3572595#3572595 que puede cambiar las etiquetas de los campos de texto, por lo que puedo tener un método y enciéndalo. – Rodrigo

+4

Uso UIControlEventEditingDidEnd. UIControlEventValueChanged no parece ser llamado:? – whatever0010011

0

Si usted no sigue la sugerencia de Ed, usted es probablemente mejor que conserva su vista de texto en la celda de medida y la adición de una propiedad para acceder a la vista.

0

También puede hacer que sus celdas personalizadas conserven una referencia a su controlador de vista de nivel superior y enviar notificaciones cuando el usuario actualice valores en ellas. Básicamente, copie el patrón delegado utilizado por muchos objetos de la biblioteca en UIKit.

Cuestiones relacionadas