ios - subview Controller viewDidLoad 在父 View Controller 之前被调用?

标签 ios uiviewcontroller

在 Storyboard 中,我将 ParentViewController 设置为嵌入 ChildViewController。我在他们的两个 viewDidLoad() 中运行了打印语句方法,并且我的 subview Controller 的 View 在父 View 之前加载。我不访问 prepare(for:) 中的 child 的 View .

有谁知道为什么 child 的观点先于 parent 的观点加载?我会认为,因为 Storyboard/segues 会自动调用 parentView.addSubview(childView)这意味着首先加载父 View ,因此我们可以调用 addSubview .

最佳答案

你忘记的是loadView() , viewDidLoad() 之前的生命周期方法. loadView()负责 View 和 subview 的构造,如果你用这种方法打印你会发现父级的loadView()在 subview 之前调用,这是因为必须先构造父 View ,然后才能添加 subview ,例如 subview (您是正确的)。 loadView()也是建立父子关系的地方(在父级的 loadView() 中)并且父级必须将其子级带到 viewDidLoad()在进入 viewDidLoad() 之前因为 child 的观点(实际上)是 parent 的观点。父级没有 View ,从某种意义上说,它只显示其子级的 View 。因此, parent 必须将其 child 带到viewDidLoad()。在它声称自己的 View 确实加载之前。

关于ios - subview Controller viewDidLoad 在父 View Controller 之前被调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55618301/

相关文章:

iphone - 在 ios 中使用 AVAudioPlayer 和 MPMusicPlayerController 在歌曲播放列表中添加淡入淡出效果

ios - CoreStore如何观察数据库的变化

iOS 开发 : UITableView & segues

ios - Present ViewController 模态显示奇怪的动画

iphone - 什么样的绘图技术是合适的?

javascript - 在嵌入式网络浏览器(iOS)中通过 JavaScript 访问本地文件

iphone - Cocos2d : Calculate bounce of bullet when colliding with a block

ios - 推送一个重复的 View Controller

ios - 标签栏下方的 Swift View 布局

uiview - iOS 9 中界面旋转结束时的回调?