当用户点击UITableViewController
左上角的“编辑”或“完成”时,我需要进行一些更改(除了Apple自动执行的操作之外)。
我覆盖setEditing()
,在那里进行视觉更改。效果很好。
当用户在setEditing()
上向左滑动时,也会调用UITableViewController
的方法UITableViewCell
。
问题来了:当用户向左滑动单元格时,就像苹果一样,我需要做不同的重要事情。
我怎么知道是哪个用户操作(点击编辑或在单元格上向左轻扫)引起了setEditing()
的呼叫?
答案 0 :(得分:1)
要判断是否发生了滑动操作,请在代码中添加UITableViewDelegate
回调tableView(_:willBeginEditingRowAt:)
。在此函数中设置一个内部标志,并在调用setEditing
时检查此标志。
答案 1 :(得分:1)
通过尝试@bbarnhart的答案得到启发:
覆盖tableView(_:willBeginEditingRowAt:)
时,单元格滑动开始时不会调用setEditing(true)
。
覆盖tableView(_:didEndEditingRowAt:)
时,在单元格编辑结束时不会调用setEditing(false)
。
因此,仅这些替代项的存在即可解决问题。