覆盖 UITableViewController 中的 setEdit:调用从何而来?
Posted
技术标签:
【中文标题】覆盖 UITableViewController 中的 setEdit:调用从何而来?【英文标题】:Override setEdit in UITableViewController: where does the call come from? 【发布时间】:2018-08-30 16:09:31 【问题描述】:当用户点击UITableViewController
左上角的编辑或完成时,我需要更改一些内容(除了 Apple 自动执行的操作)。
我覆盖setEditing()
,在那里做我的视觉改变。工作正常。
当用户在UITableViewCell
上向左滑动时,UITableViewController
的方法setEditing()
也会被调用。
问题来了:像 Apple 一样,当用户在单元格上向左滑动时,我需要以不同的方式处理重要的事情。
我如何知道哪个用户操作(点击编辑或在单元格上向左滑动)导致了setEditing()
调用?
【问题讨论】:
【参考方案1】:要判断滑动是否导致编辑发生,请将UITableViewDelegate
回调tableView(_:willBeginEditingRowAt:)
添加到您的代码中。在这个函数中设置一个内部标志,当setEditing
被调用时检查这个标志。
【讨论】:
【参考方案2】:受到@bbarnhart 回答的启发:
当覆盖tableView(_:willBeginEditingRowAt:)
时,setEditing(true)
不会在单元格滑动开始时调用。
当覆盖 tableView(_:didEndEditingRowAt:)
时,setEditing(false)
在单元格编辑结束时不会被调用。
所以只有这些覆盖的存在就解决了问题。
【讨论】:
以上是关于覆盖 UITableViewController 中的 setEdit:调用从何而来?的主要内容,如果未能解决你的问题,请参考以下文章
使用情节提要时未调用 UITableViewController 覆盖初始化函数
(Swift) 以编程方式在 UITableViewController 上方添加 UIView
IOS:UISearchBar 部分覆盖 UINavigationBar 提示
UITableViewController 未根据输入调整大小