iOS/iPhone/iPad/watchOS/tvOS/MacOSX/Android プログラミング, Objective-C, Cocoa, Swiftなど
では、ルートビューコントローラを使って画面遷移はできないか?試してみよう。
ビューの時と同様に赤と青の二つのビューコントローラを生成し、初めは赤を表示する。
- (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:等が呼ばれるのは、タッチの際のルートビューコントローラの変更時でも同様だ。