【发布时间】:2018-02-07 19:17:21
【问题描述】:
xcode 有一些奇怪的地方。突然间,普通的流程被打破了。为了检查它,我创建了一个只有两个视图控制器的新项目。第一个(命名为 ViewController)只包含一个按钮来打开第二个(命名为 NewViewController)的控制器,其中包含唯一的 UILabel。
import UIKit
class ViewController: UIViewController {
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "Show New View" {
guard let newVC = segue.destination as? NewViewController else { return }
newVC.passedText = "some abstract text"
}
}
}
import UIKit
class NewViewController: UIViewController {
@IBOutlet weak var myLabel: UILabel!
var passedText: String? {
didSet {
guard let text = passedText else { return }
myLabel.text = text
}
}
override func viewDidLoad() {
super.viewDidLoad()
}
}
But the debugger shows what the UILabel is nil
我做错了什么?
【问题讨论】:
-
这是正常的。
prepareForSegue中尚未加载视图,因此未设置出口。你应该有条件地在你的设置器中打开出口,你需要在viewDidLoad或viewWillAppear中建立视图的初始状态 -
是的,我知道了。谢谢!