2009-07-10 85 views
1

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

回答

5

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

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

+1

因此,如果我有10个视图...所有10获得加载?发生了什么“仅根据需要加载视图”? 因此,“添加”一个子视图到一个窗口......真的只是“显示它”? 代码实际上在做什么* LOAD *这个视图? – Bonnie 2010-02-26 14:01:07

0

我的理解是,视图被延迟加载。如果您的视图控制器有10个视图,那么在您真正尝试访问视图之前,它们并不会全部加载。