獲取當前正在顯示的任意頁面(包括AlertView),然后present到新控制器。

iOS開發中,如果需要在任意一個頁面中present一個controller時,因為有可能當前正在顯示的頁面彈出了alertview或者已經present了一個頁面,導致present到新頁面失效,這時我們可以這樣做:

- (UIViewController *)getPresentedViewController
{
    UIViewController *appRootVC = [UIApplication sharedApplication].keyWindow.rootViewController;
    UIViewController *topVC = appRootVC;
    if (topVC.presentedViewController) {
        topVC = topVC.presentedViewController;
    }    
    return topVC;
}

如果當前沒有alertview或者present頁面,那將獲取到rootViewController根控制器,用根控制器去present跳轉,否則將獲取到當前正在present的頁面,用此頁面去跳轉。

[[self getPresentedViewController] presentViewController:_callController animated:NO completion:nil];
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容