異なるStorybordのViewControllerにSegueする方法

ViewControllerが大量になりすぎてStoryboardを分割した際など、異なるStoryboardのViewControllerへSegueさせる方法です。modalではなく通常のpushでSegueさせる方法が分からなくて悩んでいたのですが、その方法が分かりました。

segueToDataVC
横に移動しながら画面遷移して、戻るボタンが欲しい!

Storyboard

次の2つのstoryboardがあるとします。

■ MainStoryboard

MainStoryboard1

 

■ SubStoryboard

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の分割」をご覧ください。


関連記事