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 :(得分:0)
<强> RootViewController的强>
根视图控制器提供窗口的内容视图。 将视图控制器分配给此属性(以编程方式 或者使用Interface Builder)将视图控制器的视图安装为 窗口的内容视图。如果窗口具有现有视图 层次结构,旧视图在新视图之前被删除 安装。
<强> addSubview 强>
此方法保留视图并将其下一个响应者设置为接收者, 这是它的新超级视图。
视图只能有一个超级视图。如果视图已经有超视图和 该视图不是接收者,此方法删除了以前的 在使接收器成为新的超级视图之前的超视图。
所以我们可以说主要区别在于设置rootViewController会破坏UIWindow
中包含的所有先前视图,并使用addSubView:只在顶部添加UIView
。
答案 1 :(得分:0)
self.window.rootViewController = self.tabBarController;
此语句错误,因为window是一个容器,你没有任何根控制器。
子视图: [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.