方式一
- UITabBarController使用代码创建
- 4个UINavigationController使用Storyboard创建
- 在AppDelegate.m文件中发起UITabBarController调用
之所以不纯Storyboard实现是考虑到4个Storyboard文件如果放在一个Storyboard文件里,不利于管理与协同,还有稍一改用布局都得重新编译将会非常耗时。
自定义一个UITabBarController
#import@interface MainTabBarController : UITabBarController@end#import "MainTabBarController.h"@interface MainTabBarController () @end@implementation MainTabBarController- (void)viewDidLoad { [super viewDidLoad]; UINavigationController *homeNVC = [[UIStoryboard storyboardWithName:@"Home" bundle:nil] instantiateInitialViewController]; UINavigationController *classifyNVC = [[UIStoryboard storyboardWithName:@"Category" bundle:nil] instantiateInitialViewController]; UINavigationController *cartNVC = [[UIStoryboard storyboardWithName:@"Cart" bundle:nil] instantiateInitialViewController]; UINavigationController *memberNVC = [[UIStoryboard storyboardWithName:@"Member" bundle:nil] instantiateInitialViewController]; self.viewControllers = @[homeNVC,classifyNVC,cartNVC,memberNVC];}@end
在AppDelegate.m中调用
@implementation AppDelegate- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // 初始化TabBarController MainTabBarController *rootViewController = [[MainTabBarController alloc] init]; self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; self.window.rootViewController = rootViewController; [self.window makeKeyAndVisible]; return YES;}
方式二
在XCode7之后,还有一种做法是,使用Storyboard Reference来纯Storyboard来完成
详见:
遗憾的是这么好的特性,只能在iOS9下使用
因此,为了适配iOS8及以下的版本,还是老老实实地使用第一种方式实现