【问题标题】:Override setEdit in UITableViewController: where does the call come from?覆盖 UITableViewController 中的 setEdit:调用从何而来?
【发布时间】:2018-08-30 16:09:31
【问题描述】:

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

我覆盖setEditing(),在那里做我的视觉改变。工作正常。

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

问题来了:像 Apple 一样,当用户在单元格上向左滑动时,我需要以不同的方式处理重要的事情。

我如何知道哪个用户操作(点击编辑或在单元格上向左滑动)导致了setEditing() 调用?

【问题讨论】:

    标签: ios swift uitableview uitableviewrowaction


    【解决方案1】:

    要判断滑动是否导致编辑发生,请将UITableViewDelegate 回调tableView(_:willBeginEditingRowAt:) 添加到您的代码中。在这个函数中设置一个内部标志,当setEditing被调用时检查这个标志。

    【讨论】:

      【解决方案2】:

      受到@bbarnhart 回答的启发:

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

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

      所以只有这些覆盖的存在就解决了问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-18
        • 2010-10-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多