IOS获取顶层的viewcontroller

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结构,如果有获取不到的,欢迎留言,我再次补充

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值