uitableviewcontroller example iphone uitableview

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" } }