XIBやストーリーボードを使わずにタブバーによる画面遷移を行うには

![スクリーンショット（2013-06-07 12.39.19）.png](https://qiita-image-store.s3.amazonaws.com/0/12939/60246fff-7897-78d9-e7fa-30b457c77335.png)

![スクリーンショット（2013-06-07 12.39.32）.png](https://qiita-image-store.s3.amazonaws.com/0/12939/87bc282d-7ce0-f048-0254-32ab0c99a02c.png)

まず以下記事を参照に2画面の遷移を実装する。

>XIBやストーリーボードを使わずにEmpty Projectに画面を2つ追加し、お互いに画面遷移させるには #Objective-C #iOS - Qiita [キータ] http://qiita.com/items/9eaf6c7d9a04081e3ffc

上記記事をベースに変更を行い、ボタンで遷移していたのを、タブバーを使って遷移するようにする。

1. アプリケーション本体のコードを書く

    2つのビューの代わりに「rootController」をつくる。

```objc:AppDelegate.h

〜略〜

@interface AppDelegate : UIResponder <UIApplicationDelegate>
{
//    UIViewController* viewController1_;
//    UIViewController* viewController2_;
    UIViewController* rootController_;
}

〜略〜

```

2つのビューのインスタンスは実装コードの中でつくり、それらを`NSArray`に入れて、`UITabBarController setViewControllers: animated:`の`setViewControllers:`引数に入れる。

```objc:AppDelegate.m

#import "AppDelegate.h"
#import "ViewController1.h"
#import "ViewController2.h"

@implementation AppDelegate

@synthesize window = _window;

- (void)dealloc
{
//    [viewController1_ release];
//    [viewController2_ release];
    [rootController_ release];
    
    [_window release];
    [super dealloc];
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    // Override point for customization after application launch.
//    self.window.backgroundColor = [UIColor whiteColor];
    
//    [self.window addSubview:viewController1_.view];
//    [self.window addSubview:viewController2_.view];
//    [self.window bringSubviewToFront:viewController1_.view];

    rootController_ = [[UITabBarController alloc] init];
    ViewController1* tab1 = [[[ViewController1 alloc] init] autorelease];
    ViewController2* tab2 = [[[ViewController2 alloc] init] autorelease];
    NSArray* controllers = [NSArray arrayWithObjects:tab1, tab2, nil];
    [(UITabBarController*)rootController_ setViewControllers:controllers animated:NO];
    [self.window addSubview:rootController_.view];
    
    [self.window makeKeyAndVisible];
    return YES;
}
```

2. 各ビューのコードを書く

```objc:ViewController1.m

〜略〜

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
        self.title = @"Hello";
        self.tabBarItem = [[[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemFavorites tag:0] autorelease];
    }
    return self;
}

〜略〜

```

```objc:ViewController2.m

〜略〜

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
        self.title = @"こんにちは";
        self.tabBarItem = [[[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemContacts tag:0] autorelease];
    }
    return self;
}

〜略〜

```
これでタブバーにより2画面を切り替えることができるようになった。

-----
ブログやってます：[PAPA-tronix !](http://weed.cocolog-nifty.com/wzero3es/)