ios - UIViewController 在 viewDidLoad 之前访问子视图
问题描述
我有一个 UIViewController 的子类,我定义了一个像这样的变量:
public class CustomController: UIViewController {
@IBOutlet weak var slider:UISlider!
public var showSlider = false {
didSet {
slider.isHidden = !showSlider
}
}
...
...
}
现在,如果我像这样实例化我的自定义视图控制器:
let controller = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "CustomController") as! CustomController
controller.showSlider = true
问题是甚至在设置 viewDidLoad 或 IBOutlets 之前就可能调用第二行。如何处理这样的情况?
解决方案
当前代码将在您在演示之前访问插座时崩溃,因此您需要loadViewIfNeeded
let controller = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "CustomController") as! Cust omController
controller.loadViewIfNeeded()
controller.showSlider = true