XIBやストーリーボードを使わずにEmpty Projectに画面を2つ追加し、お互いに画面遷移させるには

![スクリーンショット（2013-06-07 11.37.36）.png](https://qiita-image-store.s3.amazonaws.com/0/12939/09ff8c0d-b0a0-b056-99a0-3b235451361c.png)

![スクリーンショット（2013-06-07 11.37.48）.png](https://qiita-image-store.s3.amazonaws.com/0/12939/43866693-4323-9cbe-80ff-bd1397d8a05e.png)

以上のような2つの画面をお互いに遷移するようなアプリケーションを作る。

1. アプリケーション本体を用意する
    [New Project]->
    [Empty Project]

    プロジェクトがつくられ、**AppDelegate.h**と**AppDelegate.m**ができる。

2. 1枚目の画面を用意する
    [New File]->
    [UIViewCotroller subclass]->
    [class名]**ViewController1**
    [with XIB]**チェックを外す**

    プロジェクト内に**ViewController1.h**と**ViewController1.m**ができる。

2. 2枚目の画面を用意する
    [New File]->
    [UIViewCotroller subclass]->
    [class名]**ViewController2**
    [with XIB]**チェックを外す**

    プロジェクト内に**ViewController2.h**と**ViewController2.m**ができる。

2. ViewController1.mのコードを書く

```objc:ViewController1.m

〜略〜

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    // ラベルを追加
    UILabel* label = [[[UILabel alloc] initWithFrame:self.view.bounds] autorelease];
    label.text = @"Hello, world!";
    label.textAlignment = UITextAlignmentCenter;
    label.backgroundColor = [UIColor blackColor];
    label.textColor = [UIColor blackColor];
    label.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
    [self.view addSubview:label];
    
    // ボタンを追加
    UIButton* button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [button setTitle:@"画面遷移" forState:UIControlStateNormal];
    [button sizeToFit];
    CGPoint newPoint = self.view.center;
    newPoint.y += 50;
    button.center = newPoint;
    button.autoresizingMask =
    UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin;
    [button addTarget:self action:@selector(buttonDidPush) 
        forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:button];
}

〜略〜

- (void)buttonDidPush
{
    // 自分自身を背面へ移動
    [self.view.window sendSubviewToBack:self.view];
}

```

3. ViewController2.mのコードを書く

```objc:ViewController1.m

〜略〜

- (void)viewDidLoad
{
    [super viewDidLoad];
    
     // ラベルを追加
    UILabel* label = [[[UILabel alloc] initWithFrame:self.view.bounds] autorelease];
    label.text = @"こんばんは、世界！";
    label.textAlignment = UITextAlignmentCenter;
    label.backgroundColor = [UIColor blackColor];
    label.textColor = [UIColor blackColor];
    label.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
    [self.view addSubview:label];
    
    // ボタンを追加
    UIButton* button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [button setTitle:@"画面繊維" forState:UIControlStateNormal];
    [button sizeToFit];
    CGPoint newPoint = self.view.center;
    newPoint.y += 50;
    button.center = newPoint;
    button.autoresizingMask =
    UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin;
    [button addTarget:self action:@selector(buttonDidPush) 
     forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:button];
}

〜略〜

- (void)buttonDidPush
{
    // 自分自身を背面へ移動
    [self.view.window sendSubviewToBack:self.view];
}
```

3. AppDelegate.hのコードを書く

```objc:AppDelegate.h

〜略〜

@interface AppDelegate : UIResponder <UIApplicationDelegate>
{
    UIViewController* _viewController1;
    UIViewController* _viewController2;
}

〜略〜

```

3. AppDelegate.mのコードを書く

```objc:AppDelegate.m

〜略〜

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

@implementation AppDelegate

@synthesize window = _window;

- (void)dealloc
{
    [_viewController1 release];
    [_viewController2 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];
    
    _viewController1 = [[ViewController1 alloc] init];
    _viewController2 = [[ViewController2 alloc] init];
    [self.window addSubview:viewController1_.view];
    [self.window addSubview:viewController2_.view];
    [self.window bringSubviewToFront:_viewController1.view];
    
    [self.window makeKeyAndVisible];
    return YES;
}

〜略〜

```

これで実行すれば2つのビューが交互に表示されるはずである。

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