为什么我不能在另一个ViewController上向UILabel发送值?

nip*_*ese 0 xcode uilabel swift

我只是想通过segue将文本发送到另一个ViewController上的UILabel:

let controller = segue.destinationViewController as! DetailViewViewController
controller.detailViewLabel.text = "Hello!"
Run Code Online (Sandbox Code Playgroud)

但在执行时赛格瑞,detailViewLabelnil每一次.

但是,如果将字符串发送到新的var类型string,然后分配detailViewLabel.text给新的字符串viewDidLoad,它可以正常工作.

例如,这工作正常:

var detailViewLabelText: String!

@IBOutlet weak var detailViewLabel: UILabel!

override func viewDidLoad() {
    super.viewDidLoad()
    detailViewLabel.text = detailViewLabelText
    // Do any additional setup after loading the view.
}
Run Code Online (Sandbox Code Playgroud)

为什么我不能直接将字符串发送到via a segue 的text属性UILabel

Dan*_*all 5

视图控制器中的出口在第一次加载视图时才会连接.view第一次访问UIViewController 的属性时会加载视图.

因此,如果在尝试在标签上设置文本之前强制加载视图,则代码应该有效,例如

let controller = segue.destinationViewController as! DetailViewViewController
let _ = controller.view
controller.detailViewLabel.text = "Hello!"
Run Code Online (Sandbox Code Playgroud)