[iOS]画面遷移(ルートビューコントローラの切り替え) | Cocoa練習帳

[iOS]画面遷移(ルートビューコントローラの切り替え)

では、ルートビューコントローラを使って画面遷移はできないか?試してみよう。




ビューの時と同様に赤と青の二つのビューコントローラを生成し、初めは赤を表示する。




- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    CGRect  screenBounds = [[UIScreen mainScreen] applicationFrame];
    CGRect  windowBounds = [[UIScreen mainScreen] bounds];
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.window.backgroundColor = [UIColor whiteColor];
    
    self.myViewController1 = [[MyViewController alloc] init];
    self.myViewController1.view.backgroundColor = [UIColor redColor];
    self.myViewController2 = [[MyViewController alloc] init];
    self.myViewController2.view.backgroundColor = [UIColor blueColor];
    
    self.isView1 = YES;
    self.window.rootViewController = self.myViewController1;
    
    [self.window makeKeyAndVisible];
    return YES;
}



そして、これもビューとのとき同様にタッチされたら切り替える。




- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    if (self.isView1) {
        self.isView1 = NO;
        self.window.rootViewController = self.myViewController2;
    }
    else {
        self.isView1 = YES;
        self.window.rootViewController = self.myViewController1;
    }
}



画面は切り替わった。そして、viewDidLoad等が呼ばれるとログを出力するようにしたところ、alloc/initしたタイミングでviewDidLoadまでは呼ばれている。そして、ルートビューコントローラに設定したらviewWillAppear:等が呼ばれる。viewWillAppear:等が呼ばれるのは、タッチの際のルートビューコントローラの変更時でも同様だ。




ソースコード
GitHubからどうぞ。

https://github.com/murakami/workbook/tree/master/ios/TransitionView - GitHub


関連情報
iOS View プログラミングガイド



【Cocoa練習帳】
http://www.bitz.co.jp/weblog/

http://ameblo.jp/bitz/(ミラー・サイト)