【问题标题】:UIWindow and UIView addSubview QuestionUIWindow 和 UIView addSubview 问题
【发布时间】:2009-07-10 18:17:23
【问题描述】:

addSubview 方法是否真的将视图加载到应用程序中?我问的原因是因为我的应用程序中有两个两个视图。应用程序委托将两个视图添加为子视图,然后将其中一个视图放在前面。现在,我在每个视图的每个 viewDidLoad 方法中都有一个打印语句。当我运行应用程序时,应用程序委托将视图加载为子视图,并且在加载每个视图时,我实际上看到控制台打印出我放置在每个 viewDidLoad 方法中的语句。这应该是这样做的吗?

【问题讨论】:

    标签: objective-c uiview uiwindow viewdidload


    【解决方案1】:

    viewDidLoad 实际上是 UIViewController 的一个方法,而不是 UIView。它在视图加载到内存后被调用(在你的 init 方法之后,但在 awakeFromNib 之前)。您会注意到 addSubview: 将 UIView 作为参数,因此必须加载视图才能将视图添加到另一个视图。否则你会尝试添加一个虚构的视图。

    在回答您的问题时,是的,它应该这样做。 viewDidLoad 在你 addSubview 之前很久就被调用了。事实上,如果您取出 addSubview: 行,您会注意到它仍在被调用(因为您正在创建视图的控制器)。

    【讨论】:

    • 所以如果我有 10 个视图...所有 10 个都加载了? “仅根据需要加载视图”发生了什么?所以“添加”一个子视图到一个窗口......真的只是“显示它”吗?真正执行 LOAD 这个视图的代码在哪里?
    【解决方案2】:

    我的理解是视图是延迟加载的。如果您的 viewcontroller 有 10 个视图,则在您实际尝试访问它们之前,它们不会全部加载。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-01
      • 1970-01-01
      相关资源
      最近更新 更多