Xcode 为什么可以';我是否向另一个ViewController上的UILabel发送值?

Xcode 为什么可以';我是否向另一个ViewController上的UILabel发送值?,xcode,swift,uilabel,Xcode,Swift,Uilabel,我正试图通过segue将文本发送到另一个ViewController上的UILabel: let controller = segue.destinationViewController as! DetailViewViewController controller.detailViewLabel.text = "Hello!" 但是,当执行segue时,detailViewLabel每次都是nil 但是,如果将字符串发送到类型为string的新变量,然后将detailViewLabel.te

我正试图通过segue将文本发送到另一个ViewController上的UILabel:

let controller = segue.destinationViewController as! DetailViewViewController
controller.detailViewLabel.text = "Hello!"
但是,当执行segue时,
detailViewLabel
每次都是
nil

但是,如果将字符串发送到类型为
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.
}

为什么我不能通过一个序列直接将字符串发送到
UILabel
text
属性?

视图控制器中的插座直到第一次加载视图时才连接。首次访问UIViewController的
view
属性时,将加载视图

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

let controller = segue.destinationViewController as! DetailViewViewController
let _ = controller.view
controller.detailViewLabel.text = "Hello!"

视图控制器中的插座只有在首次加载视图时才会连接。首次访问UIViewController的
view
属性时,将加载视图

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

let controller = segue.destinationViewController as! DetailViewViewController
let _ = controller.view
controller.detailViewLabel.text = "Hello!"

您还可以初始化试图发送到类外部的字符串,然后所有类都可以使用它。这不是很专业,但很有效:)

您也可以初始化要发送到类外部的字符串,然后所有类都可以使用它。这不是很专业,但很有效:)

我做了一些类似于Daniel Hall的事情,但我将数据设置为变量,然后,一旦视图加载,我将label.text设置为变量。

我做了一些类似于Daniel Hall的事情,但我将数据设置为变量,然后,一旦视图加载,我将label.text设置为变量