1. 程式人生 > >IOS獲取頂層的viewcontroller

IOS獲取頂層的viewcontroller

1 下面的方法 是在假設window的rootViewcontroller有VC的情況的獲取方式, rootViewcontroller 為空的app 我沒見過,如果你的是的,自己再新增程式碼吧 這是去高德面試的時候,被問的一個問題,當時不會,這種問題,怎麼說呢,只要給我一臺網際網路的電腦,我就能解決,我不可能知道所有的技巧,但是我有解決問題的能力 

- (UIViewController *)appRootViewController

{

UIWindow *keyWindow = [UIApplicationsharedApplication].keyWindow;

UIViewController

*vc = keyWindow.rootViewController;

UIViewController * tempVc = nil;

while (vc)

    {

        tempVc = vc;

if ([vc isKindOfClass:[UINavigationControllerclass]])

        {

            vc = [(UINavigationController *)vc visibleViewController];

        }

elseif ([vc isKindOfClass:[UITabBarController

class]])

        {

            vc = [(UITabBarController *)vc selectedViewController];

        }

else

        {

            vc = vc.presentedViewController;

        }

    }

return tempVc;

}

以上方法,我驗證了各種我想到的app結構,如果有獲取不到的,歡迎留言,我再次補充