2

我有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];
    }

}

但我想要做的是检测表格何时进入编辑模式,因为在这种情况下我需要显示/隐藏一些额外的按钮。但由于某种原因,在我的视图控制器中,这永远不会执行:

- (void)setEditing:(BOOL)editing animated:(BOOL)animated {
    NSLog(@"SET EDITING");
    [super setEditing:editing animated:animated];
}

任何建议为什么?这只是在使用 UINavigationController 中默认提供的正确编辑按钮时被调用吗?

或者我如何检测我的 UITableView 何时进入编辑模式?

4

2 回答 2

4

您正在将消息(setEditing)发送到表视图,您应该将其发送到视图控制器(大概是 UITableViewController 子类?)。然后它将为您处理表格视图。

于 2012-02-05T14:30:05.513 回答
1

好的,如果其他人遇到同样的问题,我会告诉你我是如何解决这个问题的。

在我的自定义UITableViewCell中,我现在有这个方法:

- (void)startEditMode:(UISwipeGestureRecognizer *)recognizer {

    if (self.allowEdit) {
        UITableView *table = (UITableView *)self.superview;
        UITableViewController *control = (UITableViewController *)table.dataSource;
        [control setEditing:YES animated:YES];
    }

}
于 2012-02-05T15:52:32.133 回答