更改 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 附件后 UITableViewCellAccessoryDetailDisclosureButton 消失
从 UITableViewCell 的附件视图中删除视图不起作用