姬長信(Redy)

UIViewController在viewDidLoad之前访问子视图

我有一个UIViewController的子类/uff0c我定义了一个这样的变量/uff1a

 public class CustomController: UIViewController {

    @IBOutlet weak var slider:UISlider!

     public var showSlider = false {
        didSet {       
          slider.isHidden = !showSlider
        }
      }
      ...
      ...
  }

现在/uff0c如果我实例化我的自定义视图控制器/uff0c如下所示/uff1a

  let controller = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "CustomController") as! CustomController

  controller.showSlider = true

问题是即使在设置viewDidLoad或IBOutlets之前/uff0c也可以调用第二行。如何处理这样的情况呢

应该是这样的/uff1a

showSlider = true控制器的viewDidLoad方法调用/uff0c像这样/uff1a

public class CustomController: UIViewController {
    @IBOutlet weak var slider:UISlider!

    public var showSlider = false {
        didSet {       
            slider.isHidden = !showSlider
        }
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        showSlider = true
    }
    ...
    ...
}
退出移动版