質問: やりたいこと ------ ### 前提 * iosとXCodeは最新(8)です。 ![StoryBord例](https://teratail.storage.googleapis.com/uploads/contributed_images/59cb8e162f24254fcb9ac731dacda914.png) * 例えば、以上のような画面があり、Buttonと言うボタンを押下するとPushで画面が遷移します * Viewは View1 View2 最後の画面、の3つのビューがあります * view2は上のボタンでunwindします * 最後の画面は 1. View1へ戻る 2. View2へ戻る * 二つのボタンがあります ### 目標 * 最後の画面にて * View1へ戻る を押下した場合はView1へunwind * View2へ戻る を押下した場合はView2へunwind させる方法を考えています ### 発生している問題・エラーメッセージ * 主に方法が見つかっていないのは、view1へのunwindです * unwindは、一つ前の画面へしか遷移できないようで、 仮にStorybord Unwind segueへ、view1のアクションを設定したとしても、遷移しません ![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/cf2faaa92bc85e1af45e5de2c48e3a00.png) **一つ前にしか遷移しないと言う認識はそもそも正しいか?確証なし** ーーー * 2回連続で行う方法も行ってみました view2へ普通に戻るunwindを使い、unwind先のactionでview1への view1へ戻る場合は、フラグを持たせて、 最後の画面でunwindした後、view1へのperformSegueWithIdentifierメソッドを呼び出します * この場合、view2までは戻りますが、そのままview1への遷移は行われませんでした * 具体的に言うと、まず最後の画面でunwindを行います ``` [self performSegueWithIdentifier:@"RETURN" sender:self]; ``` * unwind先のview2へきて、unwindセグエからアクションが呼び出されます * ここですぐ同じようにunwindをします ``` - (IBAction)unwindToBefor:(UIStoryboardSegue *)segue{ [self performSegueWithIdentifier:@"RETURN" sender:self]; } ``` * unwindToBeforで行われた2回目のunwindはできず、view2が表示されたママの状態になります。 ーーー * そもそもpushを使わない方がいいのか ご助言頂けますと、大変ありがたいです。 よろしくお願いいたします。
回答: 自己解決しました。 unwindセグエを使うのではなく、 pushから戻る処理(pop)を利用して遷移することで実現できました。 ``` [self.navigationController popViewControllerAnimated:YES]; ``` 最後の画面のViewController上で、 View1へ戻るを押下したとき、アクションとして以下のようにメソッドを連続で実行したところ ``` [self.navigationController popViewControllerAnimated:YES]; [self.navigationController popViewControllerAnimated:YES]; ``` 二つ前の画面までポップされ遷移することができました。 お騒がせいたしました。