如何以编程方式从 TableView 执行 segue

Posted

技术标签:

【中文标题】如何以编程方式从 TableView 执行 segue【英文标题】:How to perform a segue from TableView programmatically 【发布时间】:2019-02-08 21:12:46 【问题描述】:

我在 ViewController 上有一个 TableView,并且想通过按任意行来连接到另一个 ViewController。我的代码是:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) 
            performSegue(withIdentifier: "ShowDetailView", sender: Cell)

我已连接故事板中的两个 ViewController 并将故事板 segue 标识符命名为“ShowDetailView”,但我收到此代码错误? 谁能给我一个建议?

【问题讨论】:

在我看来 Cell 是未定义的 - 但您可能真的想提供错误消息 你能试试 sender is nil 2019-02-08 22:18:07.386326+0100 SmallApps[48231:6498227] *** 由于未捕获的异常“NSUnknownKeyException”而终止应用程序,原因:“[ setValue :forUndefinedKey:]: 这个类不符合 key itemLabel 的键值编码。' 您添加了一个名为itemLabel 的出口并将其删除,因此请清除它在 IB 中的连接 【参考方案1】:

看来你需要发送点击的单元格来获取内容,所以替换

performSegue(withIdentifier: "ShowDetailView", sender: Cell)

performSegue(withIdentifier: "ShowDetailView", sender:arr[indexPath.row])

arr 是表的 dataSource 数组,如果你不需要发送任何东西

performSegue(withIdentifier: "ShowDetailView", sender:nil)

【讨论】:

【参考方案2】:

这是因为在目的地“detailsViewController”中有一个名为“itemLabel”的子视图,您要么在代码中删除或重命名它,然后忘记断开其与 UI 的连接。右键单击它并在 itemLabel 插座上点击 X

【讨论】:

以上是关于如何以编程方式从 TableView 执行 segue的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式选择 tableview 上的单元格不会执行关联的 segue

以编程方式从带有动画的 customCell 类中的 tableView 中删除一行

以编程方式从 collectionView 内的自定义 tableView 中进行 Segue

如何以编程方式在 TableView 单元中添加多个 UIImageView

如何在具有 dequeueReusableCell 的同时以编程方式设置 tableview 样式以具有字幕?

如何以编程方式滚动tableview