Iphone UITableView编辑/完成按钮
如何在导航栏上实现一个按钮,用户可以通过该按钮对UITableView的行进行重新排序和删除Iphone UITableView编辑/完成按钮,iphone,uitableview,Iphone,Uitableview,如何在导航栏上实现一个按钮,用户可以通过该按钮对UITableView的行进行重新排序和删除 我是否必须创建自己的工具栏按钮才能为我的UITableView创建编辑/完成按钮?只需在UITableViewController的viewDidLoad中添加这一行即可 self.navigationItem.leftBarButtonItem = self.editButtonItem; 如果您的表视图superview是UINavigationController,则它将起作用。此行将添加按钮,
我是否必须创建自己的工具栏按钮才能为我的UITableView创建编辑/完成按钮?只需在
UITableViewController的viewDidLoad
中添加这一行即可
self.navigationItem.leftBarButtonItem = self.editButtonItem;
如果您的表视图superview是UINavigationController
,则它将起作用。此行将添加按钮,该按钮将在编辑模式下推送表格并退出编辑模式。通常要做的是创建自己的自定义BarbuttonItem,然后将此按钮指定为右导航栏按钮项:
UIBarButtonItem *barButtonItem=[[UIBarButtonItem alloc]initWithTitle:@"Edit"
style:UIBarButtonItemStylePlain
target:self
action:@selector(toggleEdit)];
self.navigationItem.rightBarButtonItem = barButtonItem;
[barButtonItem release];
以下是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"];
}
如果希望按钮在蓝色“完成”颜色和普通“编辑”颜色之间切换,可以将RightBarButtonim设置为UIBarButtonimStyleDone(蓝色)或UIBarButtonimStylePlane(普通),如下所示
self.navigationItem.rightBarButtonItem.style = UIBarButtonItemStyleDone;
以下是我使用的Swift版本:
func clickedEditButton(button: UINavigationItem) {
tableView.setEditing(!tableView.editing, animated: true)
if tableView.editing {
button.rightBarButtonItem?.title = "Done"
} else {
button.rightBarButtonItem?.title = "Edit"
}
}
确保首先需要初始化标题。通过故事板
此后,
@IBAction func editBtnPressed(_ sender: UIBarButtonItem) {
tableView.setEditing(!tableView.isEditing, animated: true)
if tableView.isEditing {
self.editButton.title = "Done"
} else {
self.editButton.title = "Edit"
}
}
如果在非UITableViewController上UIViewController有一个到相关UITableView的出口,则使用此选项
如上所述,无法更改条形按钮项中的值,特别是如果它是系统项。如果需要,可以创建这两个项目,并在IVAR中提供它们(如UITableViewController)。但是,创建一个新的执行时间并没有那么长,特别是如果它可能永远不会被使用的话
Swift 5
@IBOutlet var table: UITableView!
@IBAction func toggleTableEdit(sender:UIBarButtonItem) {
table.setEditing(!table.isEditing, animated: true)
navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: (table.isEditing) ? .done : .edit, target: self, action: #selector(toggleTableEdit(sender:)))
}
我试过了,虽然按钮在那里,但它并没有将我的tableView推入或退出编辑模式。我必须处理任何代理回调吗?您的视图控制器是UITableViewController的子类吗?我刚刚将我的视图控制器设置为UITableViewController的子类,并且成功了。但是我如何实现允许用户重新排列行的功能呢?现在一切都好了。我需要设置cell.showsReorderControl=TRUE编码>并实现-(BOOL)tableView:(UITableView*)tableView canmoverowatinexpath:(nsindepath*)indepath
和-(void)tableView:(UITableView*)tableView moverowatinexpath:(nsindepath*)从indepath到indepath:(nsindepath*)到indepath
方法如果我的答案帮助您解决了问题,请不要忘记接受它。泰
@IBOutlet var table: UITableView!
@IBAction func toggleTableEdit(sender:UIBarButtonItem) {
table.setEditing(!table.isEditing, animated: true)
navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: (table.isEditing) ? .done : .edit, target: self, action: #selector(toggleTableEdit(sender:)))
}