【发布时间】:2017-12-10 05:38:11
【问题描述】:
我想要完成什么?
我想要一个显示项目的 UITableView。用户应该能够单击该项目以指示该项目是否已完成。我还想让用户能够使用有关列表中项目的更多详细信息来切换到不同的 ViewController。
有什么问题?
在 UITableView 中显示项目并允许用户单击以将附件更改为复选标记非常简单。 (StackOverflow 上有数百个问题和答案,还有数十个在线教程。)我的问题是,一旦我添加了prepare(for segue: UIStoryboardSegue, sender: Any?) 函数,单击列表项会在调用tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) 后立即执行 segue,而我没有不想这样。
我提出的解决方案
我想使用新的 iOS 11 trailingSwipeActionsConfigurationForRowAt 功能允许用户滑动表格单元格以获取有关该项目的更多详细信息。我让这个滑动工作没有问题——我已经成功地使用它在其他 ViewController 中执行其他操作(例如删除、共享),所以我确信这一定是可能的。
我的问题
- 我似乎无法“识别”
sender来自内部prepare(for segue: UIStoryboardSegue, sender: Any?),这意味着我不确定如何判断该函数是否正在运行从trailingSwipeActionsConfigurationForRowAt而不是didSelectRowAt函数调用。 - 我不确定如何防止在每个
didSelectRowAt事件中调用prepare(for segue: UIStoryboardSegue, sender: Any?)。
【问题讨论】:
标签: swift uitableview