UITableView禁用"删除"确认

Tom*_*ift 5 iphone uitableview ios

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

UITableView滑动删除没有确认

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

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

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

有任何想法吗?

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

Tom*_*ift 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];
}
Run Code Online (Sandbox Code Playgroud)