UITableView 禁用“删除”确认

Posted

技术标签:

【中文标题】UITableView 禁用“删除”确认【英文标题】:UITableView disable "delete" confirmation 【发布时间】:2011-04-02 21:00:28 【问题描述】:

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

UITableView swipe to delete with no confirmation

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

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

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

有什么想法吗?

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

【问题讨论】:

【参考方案1】:

我想出了一个解决方案,但它有被拒绝的风险。 (按类名检查未记录的类是否构成违反 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];

【讨论】:

我很想知道您提交时是否被拒绝。 是的,一旦它被接受/拒绝,我会在这里发布。我可能会尝试重新修改它以删除 UITableViewCellDeleteConfirmationControl 类名 - 只是还没有决定最好的方法。 能否告诉我们它是被接受还是被拒绝? 未被拒绝。但是它在 ios7 中中断(不足为奇)。

以上是关于UITableView 禁用“删除”确认的主要内容,如果未能解决你的问题,请参考以下文章

如何从Storyboard中创建的静态UITableView中删除单元格

UITableView 禁用滑动以快速删除特定单元格

在表格视图中禁用幻灯片并删除[重复]

在 PHPhotoLibrary 删除资产中禁用删除请求的确认?

Kendo UI Scheduler 禁用删除确认或更改其内容

在 PHPhotoLibrary 中禁用删除请求的确认