2010-12-14 14 views
7

¿Existe un método de notificación o delegado que pueda usar para detectar cuándo la vista de tabla entra en el estado de edición?UITableView Edit/Done events

Lo que quiero hacer es detectar que la tabla está editando y luego mostrar una fila adicional que dice "Agregar nuevo elemento" o algo así.

Intenté agregar la fila "Agregar nuevo elemento" al final de la matriz cuando se carga el Controlador de Vista y luego, dependiendo de si [tableView isEditing] es verdadero o no, o devuelvo [array count] (para cuando estoy editando) o [cuenta de matriz] - 1 (para cuando no estoy editando).

¿Alguna idea? ¿Cuál es la forma en que Apple edita los elementos en la tabla y permite su eliminación?

Respuesta

6

Lo encontré. Reemplace este método:

- (void)setEditing:(BOOL)editing animated:(BOOL)animated{ 
    [super setEditing:editing animated:animated]; 

    // do something 
} 
3

Lo que puede hacer es agregar un IBAction como selector a su botón de edición. Cuando se toca editButton, se llamará a ese método. Ejemplo:

-(void)viewDidLoad 
{ 
// ... 
[self.editButtonItem setAction:@selector(editAction:)]; 
[self.navigationItem setRightBarButtonItem: self.editButtonItem]; 

// .. your code 

} 

-(IBAction)editAction:(id)sender 
{ 
    UIBarButtonItem * button = ((UIBarButtonItem*)sender); 

    if (!self.tableView.editing) 
    { 
     [self.tableView setEditing:YES animated:YES]; 
     [button setTitle:@"Done"]; 
     // do your stuff... 
    } 
    else 
    { 
     [button setTitle:@"Edit"]; 
     [self.tableView setEditing:NO animated:YES]; 
     // do your stuff... 
    } 
} 

Entonces, si usted tiene su propio UIButton no utilizó el estándar self.editButtonItem utilizar [yourButton addTarget: acción de auto: @selector (editAction :) forControlEvents: UIControlEventTouchUpInside]; Y manejarlo como un UIButton * en editAcción: método