Swift 未调用 Prepare(for: segue)
Swift Prepare(for: segue) not called
在我的故事板中,controller1 有 natigationController 和 segues 到 controller 2。奇怪的是 Segue 工作正常但是
override func prepare(for: segue)
没有调用整个方法(我设置了断点)。我在Whosebug上复习了很多老问题,但是没有人能解决我的问题。谢谢!
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.navigationController
上调用 performSegue
,因此将调用 navigationController.prepareForSegue
,而不是 VC 中的那个。您应该将 segue 重新连接到情节提要中的 您的 VC,为其提供标识符,然后调用:
self.performSegue(...)
在我的故事板中,controller1 有 natigationController 和 segues 到 controller 2。奇怪的是 Segue 工作正常但是
override func prepare(for: segue)
没有调用整个方法(我设置了断点)。我在Whosebug上复习了很多老问题,但是没有人能解决我的问题。谢谢!
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.navigationController
上调用 performSegue
,因此将调用 navigationController.prepareForSegue
,而不是 VC 中的那个。您应该将 segue 重新连接到情节提要中的 您的 VC,为其提供标识符,然后调用:
self.performSegue(...)