iPhone – Agregar el button "Agregar" cuando se selecciona el button Editar en UITableView

Tengo una vista de tabla en mi aplicación que muestra algunos elementos. cuando hago clic en un elemento, aparece una nueva vista de tabla (con el controller de navigation: push). Entonces, en la parte superior de la vista de la tabla, ahora hay un controller de navigation con la flecha "atrás" automática para volver. Tengo el button "editar" habilitado en el lado derecho.

Ahora quiero cuando presiono el button de edición, el button Atrás debe desaparecer y un button de agregar "+" debe estar allí en lugar del button de volver. es posible? ¿O es posible get el button Editar y Agregar en la pantalla al mismo time?

Gracias

Esto es bastante fácil. Reemplace el setEditing:animated: método de su controller de vista. Esto se editButtonItem UIViewController button Editar / Hecho (suponiendo que esté usando el editButtonItem estándar de UIViewController ).

En este método, crea un button "agregar" y lo convierte en el elemento del button de la barra izquierda. Esto ocultará el button Atrás. Quite el button "agregar" y el button de atrás volverá a aparecer.

 - (void)setEditing:(BOOL)editing animated:(BOOL)animated { [super setEditing:editing animated:animated]; if (editing) { // Add the + button UIBarButtonItem *addBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addAction:)]; self.navigationItem.leftBarButtonItem = addBtn; } else { // remove the + button self.navigationItem.leftBarButtonItem = nil; } } 

Sí, este es el enfoque que utilicé:

Tenga una propiedad tanto para el button Atrás como para el button Agregar y configúrelo en viewDidLoad:

 self.backButton = self.navigationItem.leftBarButtonItem; self.addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addPressed:)]; 

Ahora solo tiene que cambiar los botones y actualizar el estado de TableView en consecuencia cuando se presiona 'Editar'. Aquí también cambio el button 'Editar' a 'Listo':

 - (IBAction)editBarButtonPressed:(UIBarButtonItem *)sender { if (self.tableView.editing == NO) { UIBarButtonItem *myButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(editBarButtonPressed:)]; self.navigationItem.rightBarButtonItem = myButton; [self.tableView setEditing:YES animated:YES]; [self.navigationItem setLeftBarButtonItem:self.addButton animated:YES]; } else { UIBarButtonItem *myButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemEdit target:self action:@selector(editBarButtonPressed:)]; self.navigationItem.rightBarButtonItem = myButton; [self.tableView setEditing:NO animated:YES]; [self.navigationItem setLeftBarButtonItem:self.backButton animated:NO]; } } 

Espero que esto responda a su pregunta. 🙂 brrerase

El button de flecha hacia atrás es el button del controller de navigation. Entonces, si quieres desaparecer el mismo button, entonces debes escribir este código a continuación:

 self.navigationItem.hidesBackButton=YES; 

Ahora, si desea agregar su button personalizado en el controller de navigation, utilice el código siguiente:

  UIBarButtonItem *customButton = [[UIBarButtonItem alloc] initWithTitle:@"Add" style:UIBarButtonItemStyleBordenetworking target:self action:@selector(yourMethod:)]; self.navigationItem.rightBarButtonItem = customButton; 

Puede ocultar el button Atrás programáticamente cuando la vista de tabla comienza a editar, y luego agregar el button "Agregar" a la izquierda de su barra de navigation.

 [self.navigationItem setHidesBackButton:YES]; UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addButtonPressed)]; [self.navigationItem setLeftBarButtonItem:addButton]; 

Luego, cuando el usuario pulsa Listo, reemplace el button "Agregar" con el button Atrás:

 [self.navigationItem setHidesBackButton:NO]; self.navigationItem.leftBarButtonItem = self.navigationItem.backBarButtonItem;