tabBarControllerとUINavigationControllerの両方を使いたい場合
しばらく更新してなかったのと手こずったので備忘録
よくあるニュースアプリのようにtabbed Applicationで画面遷移するようにしたい
こんな感じの
tableviewのcellをタップすると画面遷移するやつ
↓(画像元:http://itunes.apple.com/jp/app/yahoo!heddorain/id407906756?mt=8)
やりかた(例えばviewController1の内部で画面遷移をさせる場合)
Xcodeでプロジェクト作成
new project→tabbed applicationを選択
AppDelegate.mを編集
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
の中の
UIViewController *viewController1 = [[[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil] autorelease];
UIViewController *viewController2 = [[[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil] autorelease];
とある部分の下あたりに
UINavigationController *navi = [[[UINavigationController alloc] initWithRootViewController:viewController1] autorelease];
を追加する。
その後
self.tabBarController = [[[UITabBarController alloc] init] autorelease];self.tabBarController.viewControllers = [NSArray arrayWithObjects:navi, viewController2, nil];self.window.rootViewController = self.tabBarController; [self.window makeKeyAndVisible]; return YES; }
とする。
あとはFirstViewControllerでもなんでもで画面遷移等をする。
大事なのは
self.tabBarController.viewControllers = [NSArray arrayWithObjects:navi, viewController2, nil];
で
self.tabBarController.viewControllersに入れるのがviewControllerではなくウUINavigationControllerをおいておくこと
今まではtabでviewControllerを切り替えていたけれど、
切り替えていたものをviewControllerじゃなくてUINavigationControllerに変更して、UINavigationControllerはそのまま普段通りに利用してる感じ
//ほんとはstoryboardを使うと楽々開発できたりもする
//Xcode4.2以上
// http://d.hatena.ne.jp/HirosigeT/20111003/1317661123
// http://matome.naver.jp/odai/2133196424153144301
参考:http://iphone-app-developer.seesaa.net/article/130194298.html
(半分ぐらいは学内のiphone勉強会で講師に聞いた)