擷取視窗當前顯示的控制器,視窗當前顯示控制器

來源:互聯網
上載者:User

擷取視窗當前顯示的控制器,視窗當前顯示控制器

解決類似網易新聞用戶端收到新聞推送後,彈出一個UIAlert,然後跳轉到新聞詳情頁面這種需求

1.提供一個UIView的分類方法,這個方法通過響應者鏈條擷取view所在的控制器

- (UIViewController *)parentController{    UIResponder *responder = [self nextResponder];    while (responder) {        if ([responder isKindOfClass:[UIViewController class]]) {            return (UIViewController *)responder;        }        responder = [responder nextResponder];    }    return nil;}

2.通過控制器的布局視圖可以擷取到控制器執行個體對象

   modal的展現方式需要取到控制器的根視圖

+ (UIViewController *)currentViewController{    UIWindow *keyWindow = [UIApplication sharedApplication].keyWindow;    // modal展現方式的底層視圖不同    // 取到第一層時,取到的是UITransitionView,通過這個view拿不到控制器    UIView *firstView = [keyWindow.subviews firstObject];    UIView *secondView = [firstView.subviews firstObject];    UIViewController *vc = secondView.parentController;    if ([vc isKindOfClass:[UITabBarController class]]) {        UITabBarController *tab = (UITabBarController *)vc;        if ([tab.selectedViewController isKindOfClass:[UINavigationController class]]) {            UINavigationController *nav = (UINavigationController *)tab.selectedViewController;            return [nav.viewControllers lastObject];        } else {            return tab.selectedViewController;        }    } else if ([vc isKindOfClass:[UINavigationController class]]) {        UINavigationController *nav = (UINavigationController *)vc;        return [nav.viewControllers lastObject];    } else {        return vc;    }    return nil;}

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.