IOS獲取頂層的viewcontroller
阿新 • • 發佈:2019-01-27
1 下面的方法 是在假設window的rootViewcontroller有VC的情況的獲取方式, rootViewcontroller 為空的app 我沒見過,如果你的是的,自己再新增程式碼吧 這是去高德面試的時候,被問的一個問題,當時不會,這種問題,怎麼說呢,只要給我一臺網際網路的電腦,我就能解決,我不可能知道所有的技巧,但是我有解決問題的能力
- (UIViewController *)appRootViewController
{
UIWindow *keyWindow = [UIApplicationsharedApplication].keyWindow;
UIViewController
UIViewController * tempVc = nil;
while (vc)
{
tempVc = vc;
if ([vc isKindOfClass:[UINavigationControllerclass]])
{
vc = [(UINavigationController *)vc visibleViewController];
}
elseif ([vc isKindOfClass:[UITabBarController
{
vc = [(UITabBarController *)vc selectedViewController];
}
else
{
vc = vc.presentedViewController;
}
}
return tempVc;
}
以上方法,我驗證了各種我想到的app結構,如果有獲取不到的,歡迎留言,我再次補充