如何在iPhone UITableView上检测编辑模式

phi*_*son 14 iphone cocoa-touch ios

对于我的iPhone应用程序,我有一个可编辑(删除)表视图.我希望能够检测到用户点击了"编辑"按钮.看到这张图片:http: //grab.by/It0

从文档中,看起来我是否实现了:

- (void)tableView:(UITableView *)tableView willBeginEditingRowAtIndexPath:(NSIndexPath *)indexPath
Run Code Online (Sandbox Code Playgroud)

然后我可以检测到它(虽然从方法的名称,我不会想到).事实证明这不起作用.

检测到这个的任何想法?我想要的原因是我想在删除模式时勾选左上角的"全部删除"按钮.

谢谢

Ste*_*ton 20

它可能无法正常工作,因为在编辑开始之前willBeginEditingRowAtIndexPath:调用它.

如果您想在另一种方法中检查,则需要该editing属性:

@property(nonatomic, getter=isEditing) BOOL editing
Run Code Online (Sandbox Code Playgroud)

如果要在按下"编辑"按钮时执行某些操作,则需要实现setEditing方法:

 - (void)setEditing:(BOOL)editing animated:(BOOL)animated
Run Code Online (Sandbox Code Playgroud)

您会找到哪个UIViewController.(嗯,这是最有可能的地方;还有其他地方.)


ima*_*747 16

当子类化tableviewcontroller时(大多数人将要做的事情,因为你必须覆盖它的委托方法只是为了将数据放入其中......)你可以覆盖setEditing:animated:方法来获取编辑状态变化.

- (void)setEditing:(BOOL)editing animated:(BOOL)animated {
    NSLog(@"Editing %i", editing);
    [super setEditing:editing animated:animated];
}
Run Code Online (Sandbox Code Playgroud)

这会将状态更改传递给超类,但允许您跳到中间并检测更改,或者如果您想要更改它...