【发布时间】:2018-07-03 19:45:27
【问题描述】:
你能帮帮我吗?即使下面的代码看起来正确,数据(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 为 nil。我没有得到“43”?
在此先感谢您的热心帮助。 古文
【问题讨论】:
-
itemStr不能是nil,它不是可选的。你的意思是它是空字符串吗?但是在viewDidLoad和prepare中的行上有一个断点,然后查看它们的调用时间。 -
如果您尝试在
SecondController.itemStr = "43"的行中添加断点,它可以到达吗?另外,您确定itemStr没有在您的代码中的某处设置为""? -
亲爱的艾哈迈德,非常感谢您的及时回复。但这一次,itemNoLabel 显示的是默认标签的文本,而不是“BNo:”...?谢谢,Guven。
-
没有。 itemStr 在代码中没有设置为“”。
-
"在第二个视图控制器之前有一个导航控制器" ...你的意思是你的 segue 从
BookTableViewController转到 导航控制器 具有BookViewController的根VC?或者你的转场是直接到BookViewController? (也许用故事板中相关控制器的屏幕截图编辑您的问题)
标签: ios swift view controllers