我想要完成什么?
我想要一个显示项目的 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
功能。 - 我不确定如何阻止对
prepare(for segue: UIStoryboardSegue, sender: Any?)
的调用在每个didSelectRowAt
事件。
最佳答案
我假设您已按住 Ctrl 键将 segue 直接从 tableview 单元格拖到目标 VC,因此当您点击该单元格时它会立即执行。
一个解决方案是创建从 VC 到 VC 的 segue,方法是按住 ctrl 从黄色 VC 图标拖动到目标 VC,并给它一个标识符:
然后通过调用 PerformSegue(withIdentifier: sender:)
手动执行 segue,您可以在其中显式地将 sender
设置为您需要在目标中识别它的任何内容。
关于swift - 带有详细信息的 UITableView list (防止 Segue?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47736238/