尋找最外層的控制器、最上層控制器

//尋找最外層控制器
- (UIViewController *)keyVc {
    UIViewController *rootVc = [UIApplication sharedApplication].keyWindow.rootViewController;
    UIViewController *keyVc = rootVc;
    while ([keyVc presentedViewController]) {
        keyVc = [keyVc presentedViewController];
    }
    return keyVc;
}


//尋找最上層控制器
- (UIViewController*)topViewController {
    return [self topViewControllerWithRootViewController:[UIApplication sharedApplication].keyWindow.rootViewController];
}
- (UIViewController*)topViewControllerWithRootViewController:(UIViewController*)rootViewController {
    if ([rootViewController isKindOfClass:[UITabBarController class]]) {
        UITabBarController* tabBarController = (UITabBarController*)rootViewController;
        return [self topViewControllerWithRootViewController:tabBarController.selectedViewController];
    } else if ([rootViewController isKindOfClass:[UINavigationController class]]) {
        UINavigationController* nav = (UINavigationController*)rootViewController;
        return [self topViewControllerWithRootViewController:nav.visibleViewController];
    } else if (rootViewController.presentedViewController) {
        UIViewController* presentedViewController = rootViewController.presentedViewController;
        return [self topViewControllerWithRootViewController:presentedViewController];
    } else {
        return rootViewController;
    }
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 女生可以選擇的路很多,人生折騰點未必不幸福,只是很辛苦。 文/一米 慢慢地, 越來越喜歡下雨天 笑點越來越低 淚點...
    辭不盡意閱讀 174評論 0 1
  • 這幾天突然開始懷舊起來,對那些久遠的事忽然有了鮮明的印象。以至于多次夢見自己出現在大學的宿舍里。昨日又夢見大學的同...
    阿夕閱讀 549評論 0 0
  • 聽過多少的人說,人要為自己而活。然而為自己活真有那么容易嗎? 你明明不滿現在的生活狀態,不能忍受一次次對比之后產生...
    宛若清晨閱讀 175評論 0 0
  • 股神巴菲特說“現金為王”,其實咱們自己想想吧,家里沒現金了,這日子就過不下去了,你說房子車子再值錢,變現那...
    喜喜娘娘閱讀 582評論 0 5