覆盖UITableViewController中的setEdit:调用来自何处?

时间:2018-08-30 16:09:32

标签: ios swift uitableview uitableviewrowaction

当用户点击UITableViewController左上角的“编辑”或“完成”时,我需要进行一些更改(除了Apple自动执行的操作之外)。

我覆盖setEditing(),在那里进行视觉更改。效果很好。

当用户在setEditing()上向左滑动时,也会调用UITableViewController的方法UITableViewCell

问题来了:当用户向左滑动单元格时,就像苹果一样,我需要做不同的重要事情。

我怎么知道是哪个用户操作(点击编辑或在单元格上向左轻扫)引起了setEditing()的呼叫?

2 个答案:

答案 0 :(得分:1)

要判断是否发生了滑动操作,请在代码中添加UITableViewDelegate回调tableView(_:willBeginEditingRowAt:)。在此函数中设置一个内部标志,并在调用setEditing时检查此标志。

答案 1 :(得分:1)

通过尝试@bbarnhart的答案得到启发:

覆盖tableView(_:willBeginEditingRowAt:)时,单元格滑动开始时不会调用setEditing(true)

覆盖tableView(_:didEndEditingRowAt:)时,在单元格编辑结束时不会调用setEditing(false)

因此,仅这些替代项的存在即可解决问题。