繁体   English   中英

为什么没有调用我对 viewDidLoad 的第二次覆盖?

[英]Why doesn’t my second override of viewDidLoad get called?

我覆盖了 viewDidLoad 两次。 第二次,所以我可以设置一个委托。 然而......它没有被调用,因为 myDel 为零。 为什么我的覆盖,在具体类 CoolTableController 中不被调用?

protocol CoolTableProtocol {
   //unrelevant code
}

class CoolTableViewController: UITableViewController {
    var myDel: CoolProtocol!
    override func viewDidLoad() {
        super.viewDidLoad()
        print("myDel")
        //this should not be nil....yet it is
        print(myDel)
    }
}

class CoolTableController: CoolTableViewController,CoolTableProtocol {
    override func viewDidLoad() {
        self.myDel = self
        super.viewDidLoad()
    }
}

我称之为:

let coolTableVC = CoolTableController()
mainView.addSubview(coolTableVC.view)
self.addChild(coolTableVC)
coolTableVC.didMove(toParent: self)
        

请注意ViewDidLoad是一个生命周期函数,它不会以编程方式触发,只有在

  • viewDidLoad 在控制器的视图加载到内存后调用。

创建UIViewController的普通实例不会自行触发这些功能。

所以你可以像这样调用coolTableVC.view let _ = coolTableVC.view因为该函数将在.view加载后触发。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM