我有一个UITableView
,里面有一些自定义单元格。在这些自定义单元格中,我定义了一个UILongPressGestureRecognizer
来触发此表的编辑模式。因此,当有人按下并按住一个单元格1.5秒时,表格将进入编辑模式。
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(startEditMode:)];
哪个触发器:
- (void)startEditMode:(UISwipeGestureRecognizer *)recognizer {
if (self.allowEdit) {
UITableView *table = (UITableView *)self.superview;
[table setEditing:YES animated:YES];
}
}
但我想要做的是检测表何时进入编辑模式,因为在这种情况下我需要显示/隐藏一些额外的按钮。但由于某些原因,在我的viewcontroller中,这从未执行过:
- (void)setEditing:(BOOL)editing animated:(BOOL)animated {
NSLog(@"SET EDITING");
[super setEditing:editing animated:animated];
}
有什么建议吗?这是在使用UINavigationController默认提供的正确编辑按钮时调用吗?
或者我如何检测我的UITableView何时进入编辑模式?
答案 0 :(得分:4)
您正在将消息(setEditing)发送到表视图,您应该将它发送到视图控制器(可能是UITableViewController子类?)。然后它将为您处理表格视图。
答案 1 :(得分:1)
好的,如果其他人带着同样的问题走进这个线程,我会告诉你我是如何解决这个问题的。
在我的自定义UITableViewCell
中,我现在有了这个方法:
- (void)startEditMode:(UISwipeGestureRecognizer *)recognizer {
if (self.allowEdit) {
UITableView *table = (UITableView *)self.superview;
UITableViewController *control = (UITableViewController *)table.dataSource;
[control setEditing:YES animated:YES];
}
}