swift - 带有详细信息的 UITableView list (防止 Segue?)

标签 swift uitableview

我想要完成什么?

我想要一个显示项目的 UITableView。用户应该能够单击该项目以指示该项目是否已完成。我还想让用户能够使用有关列表中某个项目的更多详细信息来切换到不同的 ViewController。

问题是什么?

在 UITableView 中显示项目并允许用户单击以将附件更改为复选标记非常简单。 (StackOverflow 上有数百个问题和答案,在线提供了数十个教程。)我的问题是,一旦我添加了 prepare(for segue: UIStoryboardSegue, sender: Any?)函数,单击列表项会在调用 tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) 后立即执行 segue ,我不希望这种情况发生。

我提出的解决方案

我想使用新的 iOS 11 trailingSwipeActionsConfigurationForRowAt允许用户滑动表格单元格以获取有关该项目的更多详细信息的功能。我没有问题让这个滑动工作 - 我已经成功地使用它在其他 ViewController 中执行其他操作(例如删除,共享)所以我确信这一定是可能的。

我的问题

  1. 我似乎无法“识别”谁是 sender来自 prepare(for segue: UIStoryboardSegue, sender: Any?) ,这意味着我不确定我将如何判断是否正在从 trailingSwipeActionsConfigurationForRowAt 调用函数而不是 didSelectRowAt功能。
  2. 我不确定如何阻止对 prepare(for segue: UIStoryboardSegue, sender: Any?) 的调用在每个 didSelectRowAt事件。

最佳答案

我假设您已按住 Ctrl 键将 segue 直接从 tableview 单元格拖到目标 VC,因此当您点击该单元格时它会立即执行。

一个解决方案是创建从 VC 到 VC 的 segue,方法是按住 ctrl 从黄色 VC 图标拖动到目标 VC,并给它一个标识符:

enter image description here

然后通过调用 PerformSegue(withIdentifier: sender:) 手动执行 segue,您可以在其中显式地将 sender 设置为您需要在目标中识别它的任何内容。

关于swift - 带有详细信息的 UITableView list (防止 Segue?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47736238/

相关文章:

ios - 将数据从一个 tableViewController/Swift 文件传递​​到另一个文件,无需转场

iOS 自定义导航栏后退按钮标题在点击时消失

ios - Facebook 集成 -ios+ Swift

iphone - 在 UITableView 中显示元素,就像 iPhone 联系人一样,分成按字母顺序排列的部分?

ios - 更改旋转时嵌入的 UITextView 宽度?

ios - UITableViewCell 分隔线错位

ios - 谷歌地图方向

swift - 异步回调中的 Inout 参数未按预期工作

iphone - 使用 iPhone SDK 获取选定单元格的 textLabel 文本

ios - 如果互联网连接丢失,如何禁用整个应用程序?