2011-10-14 59 views
1
self.window.rootViewController = self.tabBarController; 
[self.window addSubview:self.tabBarController.view]; 

它們在下面的上下文中使用:下面兩條陳述有什麼區別?

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    // Override point for customization after application launch. 
    // Add the tab bar controller's current view as a subview of the window 


    // self.window.rootViewController = self.tabBarController; 
    [self.window addSubview:self.tabBarController.view]; 

    IntroViewController *introViewController = [[IntroViewController alloc] initWithNibName:@"IntroViewController" bundle:nil]; 

    //Lets place introViewController in navController 
    UINavigationController * navController = [[UINavigationController alloc] initWithRootViewController:introViewController]; 

    //Now lets display it 
    [self.tabBarController presentModalViewController:navController animated:YES]; 

    [navController release]; 
    [introViewController release]; 


    [self.window makeKeyAndVisible]; 
    return YES; 
} 

回答

0

iOS Reference

RootViewController的

根視圖控制器提供窗口的內容圖。 將視圖控制器分配給此屬性(編程爲 或使用Interface Builder)將視圖控制器的視圖安裝爲窗口的內容視圖 。如果該窗口具有現有視圖 層次結構,則在安裝新視圖之前刪除舊視圖。

addSubview

此方法保留視圖,並將其下一個應答器的接收器, 這是它的新上海華。

視圖只能有一個超級視圖。如果視圖已經有超級視圖並且該視圖不是接收者,則在使接收者成爲新的超級視圖之前,該方法移除先前的超級視圖。

因此,我們可以說,主要的區別在於設置RootViewController的銷燬所有包含在UIWindow以前的意見,並使用addSubView:只增加頂部的UIView

0

self.window.rootViewController = self.tabBarController;

此聲明是錯誤的,因爲窗口是一個容器,您沒有任何根控制器。

SubView: [self.window addSubview:self.tabBarController.view];

Here you are adding the tabBarController as a subview which will add your windows container. And this is the right way to create the tab bar controller.