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の分割

