在 Swift 中的视图控制器之间传递数据不起作用

Passing data between view controllers in Swift does not work

你能帮帮我吗?即使下面的代码看起来正确,数据(itemStr)也没有传递,我已经检查了堆栈上的类似问题 overflow.com:

第一个视图控制器(BookTableViewController.swift):

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
      if let SecondController = segue.destination as? BookViewController {
            SecondController.itemStr = "43"        
        }        
}

第二视图控制器(BookViewController.swift):

var itemStr = String()

override func viewDidLoad() {
        super.viewDidLoad()

        itemNoLabel?.text = "BNo:" + itemStr + " GYE"       
}

当我运行程序时,itemStr 为nil。我没有得到“43”?

在此先感谢您的帮助。 居文

你 运行 遇到了问题,因为你没有真正展现你认为的 UIViewController。您真正展示的是 UINavigationViewController.

但您仍然可以这样做:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
      if let navigationViewController = segue.destination as? UINavigationController {

            guard let secondViewController = navigationViewController.topViewController as? BookViewController else { return }
            secondViewController.itemStr = "43"        
        }        
}