我在视图中有一些出口,我尝试在函数中以编程方式编辑它们。
Xcode说:
在展开可选值时意外发现nil
但是,当我在viewDidLoad()
后面super.viewDidLoad()
编辑插座时,它就像魅力一样。
使用功能:
func test(){
localDeviceNameView.stringValue = "some stuff" //Found nil here
}
使用viewDidLoad
:
override func viewDidLoad() {
super.viewDidLoad()
localDeviceNameView.stringValue = "some stuff" //Works well
}
我怎样才能让它发挥作用?
答案 0 :(得分:3)
您可以在变量上使用didSet。像这样:
@IBOutlet var localDeviceNameView : UIView! {
didSet {
localDeviceNameView.stringValue = "some stuff"
}
}
这种方法的好处在于,只有在设置localDeviceNameView
时才设置stringValue,这在从NIB / Storyboard加载时是正确的。
我认为这正是你所需要的。
答案 1 :(得分:1)
您尝试在视图完全加载之前调用test()
,因此它们尚不存在。这样做:
class MyController: UIViewController {
var something = ""
override viewDidLoad() {
super.viewDidLoad()
localDeviceNameView.stringValue = something
}
}
或者只有在确定所有观看次数都已加载(test()
被调用)时才会调用您{r viewDidLoad()
方法