如果您正在使用情节提要,只需将标签栏控制器添加到情节提要中。然后选择标签栏的其中一个子场景,然后从Xcode“编辑器”菜单中选择“嵌入”-“导航控制器”。如果您对想要拥有导航控制器的任何选项卡重复该过程。在此屏幕快照中,我已将导航控制器添加到第一个和第三个选项卡,但没有添加到第二个选项卡。
希望这能说明这个想法。
如果您决定使用 NIB 执行此操作,最简单的开始方法是使用选项卡式应用程序模板创建一个新项目(显然,在下一个屏幕上,取消选中“使用情节提要”):
然后打开应用程序委托 .m 文件并替换默认值didFinishLaunchingWithOptions
,如下所示:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
UIViewController *viewController1 = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil];
UIViewController *viewController2 = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
self.tabBarController = [[UITabBarController alloc] init];
self.tabBarController.viewControllers = @[viewController1, viewController2];
self.window.rootViewController = self.tabBarController;
[self.window makeKeyAndVisible];
return YES;
}
一个为您想要导航栏的每个选项卡创建一个单独的导航控制器(在这种情况下,我只将它添加到第一个,但它说明了这个想法):
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
UIViewController *viewController1 = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil];
UINavigationController *navigationController1 = [[UINavigationController alloc] initWithRootViewController:viewController1];
UIViewController *viewController2 = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
self.tabBarController = [[UITabBarController alloc] init];
self.tabBarController.viewControllers = @[navigationController1, viewController2]; // was @[viewController1, viewController2];
self.window.rootViewController = self.tabBarController;
[self.window makeKeyAndVisible];
return YES;
}
这是启动基于 NIB 的选项卡式应用程序的相对简单的方法。然后,您可以从那里进行自定义。
就个人而言,我很难想象为什么有人会使用 NIB 而不是故事板(除非您尝试支持 iOS 4),但希望这能说明这两种技术。