我使用XCodes的Master-Detail
应用程序模板创建了一个示例应用程序。我正在尝试将child view controller
添加到master
的{{1}}。
通过关注Apple's guideline on View Controller containment,我写了以下设置:
Split View Controller
在func embedChildViewController(child: UIViewController) {
addChildViewController(child)
child.view.frame = self.view.frame
self.view.addSubview(child.view)
child.didMove(toParentViewController: self)
}
上运行时,iPad
的视图已成功添加到视图层次结构中,并且调用了孩子的child
,但viewDidLoad
方法不是。只有在以这种方式使用viewWillAppear
时才能观察到这种行为。
当我在调用Split View Controller
之前添加child's view
作为子视图时,一切都按预期工作 - 视图生命周期回调按预期执行。
addChildViewController
我在这里缺少什么 - 为什么在第一个例子中没有调用func embedChildViewController(child: UIViewController) {
child.view.frame = self.view.frame
self.view.addSubview(child.view)
addChildViewController(child)
child.didMove(toParentViewController: self)
}
方法?
编辑:
经过进一步调查,我注意到忽略对viewWillAppear
的调用导致孩子的addChildViewController(child)
被调用?