在 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"
}
}
你能帮帮我吗?即使下面的代码看起来正确,数据(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"
}
}