2010-01-20 7 views
8

Estoy escribiendo una ventana de chat de iPhone ahora.cuando se hace clic en EditButtonItem, el ícono rojo de eliminación no muestra

Sabes si el nagviationItem.rightBarItem en un UITableviewController está configurado para editar el elemento de botón, haces clic en el botón editar y luego se muestra un ícono de eliminación roja en cada fila, like shown here.

El problema es que tengo una UIViewController en lugar de un UITableViewController:

@interface ChatUIViewController : UIViewController<UITableViewDelegate,UITableViewDataSource>{ 
    UITableView *table; 
    UITextField *textField; 

}

y lo hice mismo para establecer editButtonItem:

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    self.navigationItem.rightBarButtonItem = self.editButtonItem; 

}

cuando hago clic en el botón editar, red delete icon will not show.

¿Cómo puedo hacer que el ícono rojo de eliminación aparezca en mi ChatUIViewController?

Gracias de antemano a cualquier persona que pueda ayudar. Michael

Respuesta

39

añade el siguiente método a su mesa delegado clase de vista:

- (void) setEditing:(BOOL)editing animated:(BOOL)animated { 
    [super setEditing:editing animated:animated]; 
    [self.tableView setEditing:editing animated:animated]; 
    if (editing) { 
     // you might disable other widgets here... (optional) 
    } else { 
     // re-enable disabled widgets (optional) 
    } 
} 
+0

Gracias un trillón, funcionó a la perfección. La solución genera otra pregunta: ¿Por qué el código anterior no es necesario en una clase que es clase UITableViewController, pero se necesita en una clase que subclasifica el UIViewController? Mi intuición me dice que la clase UITableViewController llama a setEditing: animated: under the hood. –

+1

Mi opinión es que una vista de tabla no es necesariamente la única vista editable. Al hacer que forme parte de un controlador de vista, uno puede pasar llamadas editables a cualquier subvista (como una vista de tabla). –

+0

Tiene sentido. Muchas gracias. :) –

Cuestiones relacionadas