StoryBoardを使わないtabBarControllerの扱い方について
StoryBoardを使わずにtabBarAppを作っています。AppDelegate.mに以下のようなコードを書いています。
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
//tabBarの生成
[self initTabBar];
if([self isFirstRun]){
//初回起動の場合、別のviewControllerに遷移
}
return YES;
}
初回起動時に表示されるviewControllerはtabBarもnavigationBarも使っていません。初回設定が終わった後に通常時はじめに表示されるviewControllerに遷移すると、tabBarが生成されません。初回設定のviewControllerをすべて破棄してはじめの画面に遷移したいのですが、どうすれば良いでしょうか。
---追記---
ご指摘ありがとうございます。以下がinitTabBarのコードです。
-(void)initTabBar{
FirstTabViewController *firstTabViewController = [[FirstTabViewController alloc] initWithNibName:nil bundle:nil];
SecondTabViewController *secondTabViewController = [[SecondTabViewController alloc] initWithNibName:nil bundle:nil];
ThirdTabViewController *thirdTabViewController = [[ThirdTabViewController alloc] initWithNibName:nil bundle:nil];
self.tabBarController = [[UITabBarController alloc] initWithNibName:nil bundle:nil];
self.tabBarController.viewControllers = [NSArray arrayWithObjects:firstTabViewController, secondTabViewController, thirdTabViewController, nil];
self.tabBarController.delegate = self;
firstTabViewController.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"first" image:nil selectedImage:nil];
secondTabViewController.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"second" image:nil selectedImage:nil];
thirdTabViewController.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"third" image:nil selectedImage:nil];
[self.window setRootViewController:tabBarController];
self.window.backgroundColor = [UIColor whiteColor];
[window makeKeyAndVisible];
}
---さらに追記---
ご指摘ありがとうございます。以下がisFirstRunのコードです。
-(BOOL)isFirstRun{
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
if([ud objectForKey:@"firstRunDate"]){
return NO;
}
return YES;
}
初回起動の場合の処理については以下のように行っています。
SetupViewController *setupVC = [[SetupViewController alloc] init];
[self.window setRootViewController:setupVC];
また、SetupViewControllerでの設定が終了したあとは以下のようなコードで遷移させています。
FirstTabViewController *firstTabVC = [[FirstTabViewController alloc] init];
firstTabVC.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self presentViewController:firstTabVC animated:YES completion:nil];
すると、遷移後にTabBarが表示されないという問題が生じます。