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 になってしまうので注意が必要なんだと。