更改 UITableViewCell 中的删除附件视图

Posted

技术标签:

【中文标题】更改 UITableViewCell 中的删除附件视图【英文标题】:Changing the delete accessory view in a UITableViewCell 【发布时间】:2009-05-13 15:38:28 【问题描述】:

是否可以在 UITableView 的 UITableViewCell 中更改响应从左到右“我想删除这一行”滑动显示的视图?

目前“删除”按钮似乎忽略了所有其他 UITableViewCell 自定义选项。

【问题讨论】:

【参考方案1】:

删除单元格的棘手之处在于:当您从左向右滑动以显示“删除”按钮时,UITableViewCell 会移动到UITableViewCellStateShowingDeleteConfirmationMask 状态,但不会设置其UITableViewCellStateEditingMask 状态。这意味着您不能更改 accessoryView 的编辑状态。

解决这个问题的方法是查看 UITableViewCell 的willTransitionToState: 方法。您可以做的是拦截对此方法的调用,这将使您的单元格处于删除确认状态并显示您自己的视图,而不是通常显示的“删除”确认按钮。

有关更多信息,请查看the docs 以获取 willTransitionToState: 以获取 UITableViewCell。

【讨论】:

谢谢蒂姆。这让我可以拦截滑动以进入编辑模式,但我不清楚如何停止 UITableViewCell 显示其自己的“删除”按钮。目前,当我将消息传递给 super 时会发生这种情况 - 文档说这是强制性的。您是否还建议这样做的唯一方法是添加我自己的 UIButton 并自己进行删除接线,而不是依赖数据源的 tableView:commitEditingStyle:forRowAtIndexPath:?删除处理绕过所有 UITableViewCell 自定义选项似乎很奇怪。 嗯。我不太确定是否可以完全抑制 UITableViewCell 的内置删除按钮的显示,除非您按照建议进行操作并设置自己的删除按钮来代替调用 super 方法。您也许可以拦截将其置于删除模式的 willTransitionToState: 消息并将它们重新路由以将表置于编辑模式,其中 (IIRC) 也提供了一个删除控件(红色的小减号)。 这听起来很狡猾。我想现在我会解决 Apple 按钮,如果我有时间实现我自己的滑动检测和删除控制。 您不再需要注册为 Apple Developer 即可查看文档中的willTransitionToState:

以上是关于更改 UITableViewCell 中的删除附件视图的主要内容,如果未能解决你的问题,请参考以下文章

在 UITableViewCell 的突出显示上更改附件视图

更改 UITableViewCell 附件后 UITableViewCellAccessoryDe​​tailDisclosureButton 消失

稍后删除 UITableViewCell 的附件视图?

从 UITableViewCell 的附件视图中删除视图不起作用

无法分配给 UITableViewCell 中的“accessoryType”

iOS 7 - 我可以更改 UITableViewCell 中的删除按钮背景颜色吗?