不知道你有沒有遇到過這個問題,控制器A presentViewController B 然後B presentViewController C,
現在呢我想在C 控制器裏通過dissmissViewController到A
說到這裏,再延伸下控制器的兩個可能很多人都沒注意的兩個只讀屬性:presentedViewController和presentingViewController,他們分別是被present的控制器和正在presenting的控制器。 控制器A和B,[A presentViewController B animated:YES completion:nil]; 那麼A相對於B就是presentingViewController,B相對於A是presentedViewController,即這個時候
B.presentingViewController = A;
A.presentedViewController = B;
瞭解之後就解決一下怎麼從C控制器dismiss到A控制器呢!!哦吼吼見證奇蹟的時候來了:
在C控制器dismiss方法裏面:
UIViewController *rootVC = self.presentingViewController;
while (rootVC.presentingViewController) {
rootVC = rootVC.presentingViewController;
}
[rootVC dismissViewControllerAnimated:YEScompletion:nil];
這樣就可以了,和剛纔的理論是吻合的