ViewControllerが大量になりすぎてStoryboardを分割した際など、異なるStoryboardのViewControllerへSegueさせる方法です。modalではなく通常のpushでSegueさせる方法が分からなくて悩んでいたのですが、その方法が分かりました。
Storyboard
次の2つのstoryboardがあるとします。
■ MainStoryboard
■ SubStoryboard
コード
MainStoryboardのDataListTVCのセルがタップされた時にSubStoryboardのDataVCへSegueさせるコードは次のようになります。
■ DataListTVC.m
#import "DataVC.h" @interface DataListTVC () @property (nonatomic, strong) DataVC *dataVC; @end @implementation DataListTVC - (DataVC *)dataVC { if (!_dataVC) { UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"SubStoryboard" bundle:nil]; _dataVC = [storyboard instantiateInitialViewController]; } return _dataVC; } - (void)segueToDataVC:(NSIndexPath *)indexPath { [self.navigationController pushViewController:self.dataVC animated:YES]; } - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { [self segueToDataVC:indexPath]; } @end
UINavigationControllerのpushViewController:メソッドを使えば良いんですね!
prepareForSegue:で行うような処理は、dataVCをgetterで初期化する時か、Segue時にコールされるメソッドsegueToDataVC:内で行えば大丈夫です。
modalにSegueさせる方法は、以前書いた記事「Storyboardの分割」をご覧ください。
関連記事
- 2012/12/07 Storyboardの分割