甘いものが好きです

iOS App開発時に感じた疑問や課題、その他の雑感などを書いていきます。

複数のStoryboardファイルを使ってViewの遷移を行う方法

Storyboardを使用することによって、1つのファイルで複数のViewの内部構成や各View間の遷移する様子を設計することができる。ところが、Viewの数が多いプロジェクトでは、1つのStoryboardでそれらのViewを一括管理しようとすると、従来のXibファイルを用いたUI設計手法よりも複数人で同時に同じファイルを修正する可能性が高くなり、修正を加えたものを後からマージするのに苦労することが予想される。もしこのような点に苦労するのであれば、Storyboardを複数ファイルに分割すればよい。*1

あるStoryboard内のViewから他のStoryboardのInitial ViewをModal Viewとして表示する方法を例として示す。

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"SecondaryStoryboard" bundle:nil];
id firstViewController = [storyboard instantiateInitialViewController];
[self presentModalViewController:(UIViewController *)firstViewController animated:YES];

Storyboardに関する処理は、UIStoryboardというクラスを介して行われる。まずはUIStoryboardクラスのクラスメソッドstoryboardWithName:bundle:で、遷移先のInitial Viewを含むStoryboardのインスタンスを取得する。そして、そのStoryboardインスタンスに対してinstantiateInitialViewControllerを送信することにより、このStoryboardのInitial View Controllerを取得する。あとは従来と同様にpresentModalViewController:animated:でModal Viewとして表示すればよい。

*1:ただし、あるStoryboardから他のStoryboardに遷移するためには、コードによる制御が必要である。コードを書く必要なくView間の遷移を実現する、というStoryboardのメリットを活かしきれなくなるおそれがあるため、可能な限りStoryboardファイルは1つのプロジェクトに1つにするのがよい。その点を強調しておく。