在 iOS 上,一个 ViewController 的 viewDidLoad 中,子视图的数量是 0?哪种方法可以显示填充的数字?

Posted

技术标签:

【中文标题】在 iOS 上,一个 ViewController 的 viewDidLoad 中,子视图的数量是 0?哪种方法可以显示填充的数字?【英文标题】:On iOS, in a ViewController's viewDidLoad, the number of subviews is 0? Which method can show the populated number? 【发布时间】:2012-05-22 12:24:20 【问题描述】:

使用 Xcode 4.3.2,在 ViewController 中启动一个全新的 Single View App

- (void)viewDidLoad

    // ...

    UIWindow *window = [[[UIApplication sharedApplication] delegate] window];
    NSLog(@"How many subviews %i", window.subviews.count);

计数实际上是0...如果我在点击事件处理程序中打印出数字,那么我确实会看到1,这是应用程序的主视图。所以我想知道viewDidLoad[subviews count]0 是如何出现的,并且是否有像viewDidLoad 这样的init 或begin 方法,它已经可以打印1(无需在点击事件处理程序中打印它)。

【问题讨论】:

【参考方案1】:

尝试 NSLog 中的子视图计数 - (void)viewDidAppear:(BOOL)animated

viewDidLoad 在控制器的视图加载到内存后调用。 viewDidAppear: 通知视图控制器其视图已添加到视图层次结构中。

【讨论】:

所以viewDidLoad 不是说主视图已经加载(或添加)? viewDidLoad:,它已被加载到内存中。然后框架调用viewWillAppear: 让你知道它将把它放到窗口中,并在完成后调用viewDidAppear:

以上是关于在 iOS 上,一个 ViewController 的 viewDidLoad 中,子视图的数量是 0?哪种方法可以显示填充的数字?的主要内容,如果未能解决你的问题,请参考以下文章

iOS 导航问题:推送 ViewController 后,会导致导航栏显示上一个 ViewController 的导航项

在 iOS 上,一个 ViewController 的 viewDidLoad 中,子视图的数量是 0?哪种方法可以显示填充的数字?

如何在 iOS 中的 ViewController 上加载 .xib UIviews

uiView 在 iOS10 的 ViewController 中未对齐,但不是 iOS11

iOS - 在 navigationController 上嵌入 viewController

在 iOS 7 上使用 Person ViewController 重新加载/更改显示的人