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;
}

最佳答案

iOS Reference

rootViewController


  根视图控制器提供窗口的内容视图。
  将视图控制器分配给该属性(以编程方式
  或使用Interface Builder)将视图控制器的视图安装为
  窗口的内容视图。如果窗口已有视图
  层次结构,先删除旧视图,再删除新视图
  已安装。


addSubview


  此方法保留视图并将其下一个响应者设置为接收者,
  这是它的新超级视图。
  
  视图只能有一个超级视图。如果视图已经具有超级视图,并且
  该视图不是接收器,此方法将删除先前的视图
  在使接收者成为新的超级视图之前。


因此,可以说主要区别在于,设置rootViewController会破坏UIWindow中包含的所有先前视图,并使用addSubView:仅在顶部添加UIView

07-26 08:54
查看更多