2つの画面を Segue でお互いに遷移させる為にはどうすればいいのでしょうか
iPhoneアプリを製作中です。
遷移元を画面A、遷移先を画面Bとします。現在の目標は、この二つの画面を
お互いに Segue でループさせることです。画面Bは CollectionView です。
画面Aに配置したボタンをタップすると、ポップアップメニューが出てきます。
その中のメニューの一つに画面遷移用のボタンを実装しました。
実装方法は以下の通りです。Ryusuke Fuda's Tech Blog - iOS Segueを使わずにコードで画面遷移を参考にしました。
- 遷移先の storyboad の Identity で、Use Storyboad ID にチェックを入れる
- Storyboad ID に遷移先のクラス名を入力する
- 遷移元のヘッダファイルに、遷移先のヘッダファイルをインポートする
- 遷移元の、画面遷移用ボタンに以下のコードを書き込む
GamenBViewController *controller =
[self.storyboard instantiateViewControllerWithIdentifier:@"GamenBViewController"];
[self presentModalViewController:controller animated:YES]; //モーダルで呼び出す
上記内容で画面 A から画面 B に遷移させました。
画面 B から画面 A には以下の内容で遷移させます。
※ showDetail は Segue の名前です
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if ([[segue identifier] isEqualToString:@"showDetail"]) {
NSIndexPath *indexPath = [self.collectionView indexPathForCell:sender];
UIImage *img = _objects[indexPath.row];
[[segue destinationViewController] setDetailItem:img];
}
}
画面 A から画面 B に遷移させる内容を実装すると、なぜかそれまでは上手くいっていたはずの、
画面 B から画面 A への遷移がエラーになってしまいます。
エラーメッセージは以下の通りです。
Terminating app due to uncaught exception 'NSGenericException', reason: 'Could not find a navigation controller for segue 'showDetail'. Push segues can only be used when the source controller is managed by an instance of UINavigationController.'
どう対処すれば良いか、どなたかご教示いただけないでしょうか。
以上、何卒よろしくお願いいたします。