Swift Prepare(for: segue) 未调用
Posted
技术标签:
【中文标题】Swift Prepare(for: segue) 未调用【英文标题】:Swift Prepare(for: segue) not called 【发布时间】:2019-11-28 16:15:05 【问题描述】:在我的故事板中,controller1 有 natigationController 并连接到控制器 2。奇怪的是 Segue 工作正常,但是
覆盖 func prepare(for: segue)
整个方法没有被调用(我设置了断点)。我在***上复习了很多老问题,但没有人能解决我的问题。谢谢!
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
tableView.deselectRow(at: indexPath, animated: true)
self.navigationController?.performSegue(withIdentifier: segueId, sender: nil)
override func prepare(for segue: UIStoryboardSegue, sender: Any?)
if segue.identifier == self.segueId
let destionationNVC = segue.destination as! UINavigationController
guard let targetVC = destionationNVC.topViewController as? ViewController2 else return
targetVC.text = self.text
【问题讨论】:
您必须在self
上调用performSegue
而不是在封闭的导航控制器上。
谢谢,但应用程序在 self.performSegue 处崩溃。
@TonyOakman 您需要删除当前连接到导航控制器的 segue,并从 您的 VC 连接一个新的。
检查segue的连接。它必须在视图控制器上启动
@vadian 也感谢您的宝贵时间!
【参考方案1】:
您在self.navigationController
上调用performSegue
,因此将调用navigationController.prepareForSegue
,而不是您的VC 中的那个。您应该将 segue 重新连接到情节提要中的 您的 VC,为其提供标识符,然后调用:
self.performSegue(...)
【讨论】:
谢谢。我试图从一开始就从 VC 的角度添加 segue,但没有奏效。似乎只能从左上角的 viewcontroller 图标添加 segue。以上是关于Swift Prepare(for: segue) 未调用的主要内容,如果未能解决你的问题,请参考以下文章
Swift 4:在 viewDidLoad 之后调用 prepare(for segue:)
iOS 和 Swift:可以强制解开 tableView.indexPath?
如何在准备中的 switch 语句中使用可选绑定(segue :)
在准备 segue 时,如何将数据传递给子 UIViewController?