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

时间:2018-07-03 19:45:28

标签: ios swift view controllers

你能帮我吗?即使以下代码似乎正确,但数据(itemStr)也没有通过,并且我已经在stackoverflow.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为零。我没有得到“ 43”?

在此先感谢您的帮助。 番石榴

1 个答案:

答案 0 :(得分:0)

您遇到了麻烦,因为您并未真正提出自己认为的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"        
        }        
}