您的位置:首页 > 移动开发 > IOS开发

IOS获取顶层的viewcontroller

2016-08-04 15:05 477 查看
1 下面的方法 是在假设window的rootViewcontroller有VC的情况的获取方式, rootViewcontroller 为空的app 我没见过,如果你的是的,自己再添加代码吧 这是去高德面试的时候,被问的一个问题,当时不会,这种问题,怎么说呢,只要给我一台互联网的电脑,我就能解决,我不可能知道所有的技巧,但是我有解决问题的能力 

- (UIViewController *)appRootViewController

{

 

    UIWindow *keyWindow = [UIApplication
sharedApplication].keyWindow;

    UIViewController *vc = keyWindow.rootViewController;

    

    UIViewController * tempVc =
nil;

    while (vc)

    {

        tempVc = vc;

        

        if ([vc
isKindOfClass:[UINavigationController
class]])

        {

            vc = [(UINavigationController *)vc
visibleViewController];

        }

        else
if ([vc isKindOfClass:[UITabBarController
class]])

        {

            vc = [(UITabBarController *)vc
selectedViewController];

        }

        else

        {

            vc = vc.presentedViewController;

        }

    

    }

    return tempVc;

   

}
以上方法,我验证了各种我想到的app结构,如果有获取不到的,欢迎留言,我再次补充
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: