我只是想通过segue将文本发送到另一个ViewController上的UILabel:
let controller = segue.destinationViewController as! DetailViewViewController
controller.detailViewLabel.text = "Hello!"
但是当执行segue时,detailViewLabel
每次都是nil
。
但是,如果将字符串发送到string
类型的新var,然后将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.
}
为什么我不能通过segue直接将字符串发送到text
的{{1}}属性?
答案 0 :(得分:5)
视图控制器中的插座在第一次加载视图时才会连接。第一次访问UIViewController的view
属性时会加载视图。
因此,如果在尝试在标签上设置文本之前强制加载视图,则代码应该有效,例如
let controller = segue.destinationViewController as! DetailViewViewController
let _ = controller.view
controller.detailViewLabel.text = "Hello!"
答案 1 :(得分:0)
您也可以初始化您尝试在课堂外发送的字符串,然后它可供所有课程使用。这不是很专业,但它有效:)
答案 2 :(得分:0)
我做了类似于Daniel Hall的事情,但我将数据设置为变量,然后,一旦视图加载,我将label.text设置为变量。