iphone - example - UITableView Editar/Botón Hecho
uitableview swift 4 programmatically (6)
¿Cómo puedo implementar un botón en la barra de navegación por el cual el usuario podría reordenar y eliminar filas de una UITableView?
¿Debo crear mi propio botón en la barra de herramientas para tener el botón Editar / Hecho para mi UITableView?
Simplemente agregue esta línea en viewDidLoad
de su UITableViewController
self.navigationItem.leftBarButtonItem = self.editButtonItem;
Funcionará si su superview de vista de tabla es UINavigationController
. Esta línea agregará un botón que empujará la tabla en el modo de edición y fuera de ella.
UIButton *btnname=[UIButton buttonWithType:UIButtonTypeSystem];
[btnname setFrame:CGRectMake(0,0,110,35)];
[btnname setFont:[UIFont boldSystemFontOfSize:18]];
[btnname setTitle: @"Delete" forState: UIControlStateNormal];
[btnname setTitleColor:UIColorFromRGB(0xCC0707) forState:UIControlStateNormal];
btnname.backgroundColor=UIColorFromRGB(0xE6E7E8);
btnname.showsTouchWhenHighlighted = YES;
[btnname addTarget:self
action:@selector(toggleEdit)
forControlEvents:UIControlEventTouchDown];
UIBarButtonItem *barItem = [[UIBarButtonItem alloc] initWithCustomView:btnname];
self.navigationItem.rightBarButtonItem = barItem;
-(void)toggleEdit{
[self.tableView setEditing:!self.tableView.editing animated:YES];
if (self.tableView.editing)
[btnname setTitle: @"Done" forState: UIControlStateNormal];
else
[btnname setTitle: @"Delete" forState: UIControlStateNormal];
}
Aquí hay una versión de Swift que utilicé:
func clickedEditButton(button: UINavigationItem) {
tableView.setEditing(!tableView.editing, animated: true)
if tableView.editing {
button.rightBarButtonItem?.title = "Done"
} else {
button.rightBarButtonItem?.title = "Edit"
}
}
Lo que generalmente se hace es crear su propio BarbuttonItem personalizado y luego asignar este botón como ítem del botón de la barra de navegación derecha:
UIBarButtonItem *barButtonItem=[[UIBarButtonItem alloc]initWithTitle:@"Edit"
style:UIBarButtonItemStylePlain
target:self
action:@selector(toggleEdit)];
self.navigationItem.rightBarButtonItem = barButtonItem;
[barButtonItem release];
Aquí está el método toggleEdit:
-(void)toggleEdit{
[self.tableView setEditing:!self.tableView.editing animated:YES];
if (self.tableView.editing)
[self.navigationItem.rightBarButtonItem setTitle:@"Done"];
else
[self.navigationItem.rightBarButtonItem setTitle:@"Edit"];
}
Si desea que su botón cambie entre el color azul "Hecho" y el color simple "Editar", puede configurar el derechoBarButtonItem en UIBarButtonItemStyleDone para azul, o UIBarButtonItemStylePlain en blanco como este
self.navigationItem.rightBarButtonItem.style = UIBarButtonItemStyleDone;
Asegúrese de que necesita inicializar el título primero. Por storyBoard,
después de esto,
@IBAction func editBtnPressed(_ sender: UIBarButtonItem) {
tableView.setEditing(!tableView.isEditing, animated: true)
if tableView.isEditing {
self.editButton.title = "Done"
} else {
self.editButton.title = "Edit"
}
}