How to find topmost view controller on iOS

后端 未结 30 2877
遥遥无期
遥遥无期 2020-11-22 08:40

I\'ve run into a couple of cases now where it would be convenient to be able to find the \"topmost\" view controller (the one responsible for the current view), but haven\'t

30条回答
  •  Happy的楠姐
    2020-11-22 09:03

    I think most of the answers have completely ignored UINavigationViewController, so I handled this use case with following implementation.

    + (UIViewController *)topMostController {
        UIViewController * topController = [UIApplication sharedApplication].keyWindow.rootViewController;
        while (topController.presentedViewController || [topController isMemberOfClass:[UINavigationController class]]) {
            if([topController isMemberOfClass:[UINavigationController class]]) {
                topController = [topController childViewControllers].lastObject;
            } else {
                topController = topController.presentedViewController;
            }
        }
    
        return topController;
    }
    

提交回复
热议问题