presentViewController で画面遷移し、直前の画面ではなく、いくつか前の画面に戻るには・・・
presentViewController で画面遷移し、直前の画面ではなく、いくつか前の画面に戻るにはどうするか。
今作っているアプリでは、
画面 1 → 画面 2 → 画面 3 と遷移し、
画面 3 で戻るボタンを押したら画面 1 に戻りたい。
直前の画面に戻るには、
dismissViewControllerAnimated
を使えばよいのですが、上記の例では画面 2 を飛ばして画面 1 に戻りたい。
このようなことをするには、次のような方法があった。
[self.presentingViewController.presentingViewController dismissViewControllerAnimated:YES completion:nil];
え、そんなことしたら、途中の画面はどうなるの?と思ったら、賢いですね、途中の画面もちゃんと消してくれる。
ちなみに、.presentingViewController はもっと続けて書けるので、上記の例で、例えば、画面 4, 5, 6 と遷移した後、画面 1 に戻りたくなったら .presentingViewController をいっぱい書けば大丈夫。もちろんその気力があればですが・・・
なお、presentingViewController ですが、Xcode で present まで入力して tab キーで補完すると presentedViewController になってしまうことがあり、気づかないと error になってしまうので注意が必要なんだと。