2011-03-25 18 views
14

Tengo una vista de tabla y una barra de navegación en la parte superior.UITableview edit/done button

Tengo un botón Editar a la izquierda de mi barra de navegación con la siguiente línea de código.

self.navigationItem.leftBarButtonItem = self.editButtonItem; 

Cuando hago clic en el botón de edición, se cambia al botón hecho. Todo está bien hasta ahora.

¿Dónde agrego el código, si quiero hacer una pequeña operación cuando se hace clic en el botón Hecho?

+0

¿Consideraría configurar en forma adecuada la respuesta correcta? –

Respuesta

55

El botón se detiene la comisión de los cambios en su clase controlador una vez que se reemplaza es la acción por defecto con self.editButtonItem.action = @selector(editClicked:);

Lo que debe hacer es reemplazar el método setEditing de UIViewController en su propia clase controlador:

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

    if(editing == YES) 
    { 
     // Your code for entering edit mode goes here 
    } else { 
     // Your code for exiting edit mode goes here 
    } 
} 

También necesita configurar su UIBarButtonItem para "Editar" en el guión gráfico o si prefiere hacerlo en código use lo siguiente:

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    self.navigationItem.rightBarButtonItem = self.editButtonItem; 
} 

editButtonItem es una propiedad auxiliar ya configurada por el sistema para su comodidad.

+9

Gracias. Aún más fácil, hice '- (void) setEditing: (BOOL) edición animada: (BOOL) animada {[super setEditing: edición animada: animada]; [self.tableView setEditing: edición animada: animada];} ' – gurooj

+0

genial respuesta gracias –

+0

esto era exactamente lo que estaba buscando. Gracias – Andrew

4

He aquí una versión Swift utilicé:

override func setEditing(editing: Bool, animated: Bool) { 
    super.setEditing(editing, animated: animated) 

    if editing { 

    } else { 

    } 
}