在我的表视图控制器中有
self.navigationItem.leftBarButtonItem = self.editButtonItem;
在左上角生成常规编辑/完成按钮。因此,一旦用户单击“编辑”,按钮标题将变为“完成”,并且可以删除或重新排序表条目。我想在用户实际点击“完成”后收到通知。是否有钩子?
背景:我想保留条目的顺序,即下次用户提取此视图时,我想以最近最少使用的顺序显示条目。
答案 0 :(得分:41)
对于仍然在这个问题上有兴趣的人(或答案:P)
显示有一种- (void)setEditing:(BOOL)editing animated:(BOOL)animate
方法
每次按下此编辑/完成按钮时都会调用这些方法。你只需要使用(BOOL)editing
参数进行检查。最后但并非最不重要的是,您必须从最初的编辑/完成按钮调用正确的方法。
只需将此方法添加到您的uitableview类
即可- (void)setEditing:(BOOL)editing animated:(BOOL)animate
{
[super setEditing:editing animated:animate];
if(editing)
{
NSLog(@"editMode on");
}
else
{
NSLog(@"Done leave editmode");
}
}
答案 1 :(得分:3)
对于那些不想覆盖UITableView的人(例如,如果你正在使用UITableViewController),这是我使用的一个简单而干净的解决方案。它主要涉及创建自己的编辑按钮项,并使用tableView的editing
标志来跟踪编辑与完成。为了锦上添花,当表格为空以添加新项目时,它会显示一个“+”按钮(而不是“编辑”)。
- (void) updateEditButtonVisibility
{
// tableItems represents the data structure that s
if ([tableItems count] > 0)
{
UIBarButtonSystemItem editButtonType = self.tableView.editing ? UIBarButtonSystemItemDone : UIBarButtonSystemItemEdit;
UIBarButtonItem *editButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:editButtonType
target:self
action:@selector(editButtonTouched)];
self.navigationItem.rightBarButtonItem = editButtonItem;
[editButtonItem release];
}
else
{
UIBarButtonItem *addButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd
target:self
action:@selector(addButtonTouched)];
self.navigationItem.rightBarButtonItem = addButtonItem;
[addButtonItem release];
}
}
- (void) editButtonTouched
{
// edit/done button has been touched
[self.tableView setEditing:!self.tableView.editing animated:YES];
[self updateEditButtonVisibility];
}
- (void) addButtonTouched
{
// logic to allow user to add new items goes here
}
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[self updateEditButtonVisibility];
}
答案 2 :(得分:2)
这是在按下小节按钮时获得通知的标准方式:
self.editButtonItem.target = self;
self.editButtonItem.action = @selector(buttonPushed:);
...
- (void) buttonPushed:(id)sender
{
// do stuff here
}
答案 3 :(得分:0)
可以更改操作。单击编辑按钮后,它会显示删除按钮,而是可以显示拒绝/验证/修改按钮。并更改相应的操作而不是删除选项
由于 Mindus