UITableView禁用“删除”确认

时间:2011-04-02 21:00:29

标签: iphone ios uitableview

这类似于询问如何在未经确认的情况下滑动/删除的问题:

UITableView swipe to delete with no confirmation

我的tableview包含设置了UITableViewCellEditingStyleDelete的单元格。当tableview处于编辑模式时,单元格会显示一个内部带有“ - ”的红色圆圈图标。要删除单元格,用户点击红色圆圈,会出现删除按钮。然后,用户必须点按“删除”,触发tableView:commitEditingStyle:forRowAtIndexPath:

我的一些行支持UITableViewCellEditingStyleInsert。在这种情况下,单元格显示一个绿色圆圈图标,里面带有“+”。点击圈子会立即调用tableView:commitEditingStyle:forRowAtIndexPath:

我想在用户点按初始红圈图标时立即调用tableView:commitEditingStyle:forRowAtIndexPath:。也就是说,没有删除按钮步骤。

有什么想法吗?

有没有办法提供从左侧滑入的自定义编辑控件,如删除/插入?如果是这样,也许我可以使用这种机制?

1 个答案:

答案 0 :(得分:3)

我想出了一个解决方案,但它有被拒绝的风险。 (按类名检查未记录的类是否构成违反sdk协议的行为?)

也许有人可以改进这个?

基本上,在我的自定义UITableViewCell的上下文中,我注意要添加的删除按钮(不是UIButton),然后调用它的UIControlEventTouchUpInside动作。有一点延迟,动画就可以解决了:

- (void) addSubview:(UIView *)view
{
    if ([NSStringFromClass([view class]) isEqualToString:@"UITableViewCellDeleteConfirmationControl"]) 
    {

        UIControl* c = (UIControl*)view;

        NSArray* actions = [c actionsForTarget: self forControlEvent: UIControlEventTouchUpInside];

        [self performSelector: NSSelectorFromString( [actions lastObject] ) withObject: view afterDelay: .25];

        return;
    }

    [super addSubview: view];
}