触发setEditing:animated:不使用编辑按钮

时间:2012-02-05 14:10:27

标签: objective-c uitableview edit setediting

我有一个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何时进入编辑模式?

2 个答案:

答案 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];
    }

}