首页 > 解决方案 > UIViewController 在 vi​​ewDidLoad 之前访问子视图

问题描述

我有一个 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 之前就可能调用第二行。如何处理这样的情况?

标签: iosswiftuiviewcontroller

解决方案


当前代码将在您在演示之前访问插座时崩溃,因此您需要loadViewIfNeeded

let controller = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "CustomController") as! Cust   omController 
controller.loadViewIfNeeded()
controller.showSlider = true

推荐阅读