2014-11-06 19 views
-3

我開始學習OC。在Objective-C中的rootViewController和addSubview?

的第一個問題是關於_window.rootviewcontroller[_window addSubview:...]

兩者的兩種方式可以設置爲viewUIWindow(實際上,UIWindowUIView繼承)。

所以,我想知道的是:

是設置爲rootviewcontroller只是window使用addSubview方法來實現,或者是別的什麼?

更確切地說:

_window.rootviewcontroller = viewController; 

意味着

[_window addSubview: viewController.view]; 

_window = viewController.view; //UIWindow : UIView 

或其他什麼東西?

非常感謝。

有沒有人能告訴我一些關於UIWindow和rootViewController屬性的細節?

+1

首先,您需要了解UIView和UIViewController之間的區別.... – Leena 2014-11-06 10:15:23

+0

Enjoy Cocoa,這是一個有趣的框架。歡迎來到SO! – Scott 2014-11-06 10:31:27

+0

@Scott非常感謝! – Daizy 2014-11-06 10:37:19

回答

0

如果使用addSubview:到必須通過UIView實例,但是,當你調用rootviewcontroller你傳遞UIViewController實例的UIWindow

您可以使用addSubview但你必須UIView上海華盈(需要被UIViewController)關聯到UIWindow,使之具有相同的行爲, 類似的東西(老辦法到:

[window addSubview:myViewController.view]; 
[window makeKeyAndVisible]; 

通過使用rootviewcontroller它會爲你做它

這是從蘋果採取:

根視圖控制器提供窗口的內容視圖。 分配一個視圖控制器此屬性(以編程 或使用界面生成器)安裝視圖控制器的作爲窗口的 內容視圖圖。如果窗口有一個現有的視圖 層次中,新的安裝 之前被刪除的舊觀點。

+0

我認爲這是不同的實施。設置根視圖控制器是使窗口視圖成爲對根視圖vontroller視圖的引用。雖然addSubview準確地設置子視圖 – Daizy 2014-11-06 10:12:02

+0

,但我想知道「內容視圖」的含義(實現)。使用'addSubview'也是獲取「內容視圖」的一種方式。 – Daizy 2014-11-06 10:28:08

+0

@youKnowDai addSubview將視圖添加到子視圖列表的末尾,就是這樣。但rootViewController將視圖控制器分配給它的屬性,添加視圖控制器的視圖作爲窗口的內容視圖,如果已經存在,則從層次結構中刪除視圖。 – Greg 2014-11-06 10:38:00

-2

顯然不是。根視圖控制器通常分配給appdelegate類中的窗口。 此外,根視圖控制器始終與UINavigationController關聯。因此,UINavigationController的任何根視圖控制器都將成爲其內容視圖控制器。

凡爲,添加子視圖僅僅是UIView類的方法。這有助於將任何子視圖添加到相應的視圖。

+2

@R_Developer,請更正這一行,'另外,根視圖控制器總是與UINavigationController相關聯......它並不總是,但可能並取決於需求 – Hemang 2014-11-06 10:29:12

+0

@Hemang,我沒有得到你,如果你能解釋這些,可能會增加一些我的知識。 – 2014-11-06 10:32:59

+2

@R_Developer,是的,一個'rootViewController'可以是一個導航控制器或'tabBarController'或一個普通的'UIViewController'。 – Hemang 2014-11-06 10:47:02