不論中間采用了 push->push->present還是present->push->present都可以準確的獲取到正在顯示的控制器。
//獲取當前所展示的控制器
- (UIViewController *)theTopviewControler{
//獲取根控制器
UIViewController *rootVC = [[UIApplication sharedApplication].delegate window].rootViewController;
UIViewController *parent = rootVC;
//遍歷 如果是presentViewController
while ((parent = rootVC.presentedViewController) != nil ) {
rootVC = parent;
}
while ([rootVC isKindOfClass:[UINavigationController class]]) {
rootVC = [(UINavigationController *)rootVC topViewController];
}
return rootVC;
}