2009-07-10 113 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個視圖,那麼在您真正嘗試訪問視圖之前,它們並不會全部加載。