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中删除单元格
在 PHPhotoLibrary 删除资产中禁用删除请求的确认?