我只是想通过 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.
}
为什么我不能通过 segue 直接将字符串发送到 UILabel
的 text
属性?
最佳答案
在第一次加载 View 之前, View Controller 中的 socket 不会连接。当第一次访问 UIViewController 的 view
属性时加载 View 。
因此,如果您在尝试设置标签上的文本之前强制加载 View ,您的代码应该可以工作,例如
let controller = segue.destinationViewController as! DetailViewViewController
let _ = controller.view
controller.detailViewLabel.text = "Hello!"
关于xcode - 为什么我不能将值发送到另一个 ViewController 上的 UILabel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36095633/