iOS獲取當前控制器

//獲取當前控制器 -? (UIViewController *)getCurrentVC { ? ? for (UIWindow *window in [UIApplication sharedApplication].windows.reverseObjectEnumerator) { ?? ? ? ? ? ? ? ? UIView *tempView = window.subviews.lastObject; ?? ? ? ? ? ? ? ? for (UIView *subview in window.subviews.reverseObjectEnumerator) { ? ? ? ? ? ? if ([subview isKindOfClass:NSClassFromString(@"UILayoutContainerView")]) { ? ? ? ? ? ? ? ? tempView = subview; ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? } ? ? ? ? } ?? ? ? ? ? ? ? ? BOOL(^canNext)(UIResponder *) = ^(UIResponder *responder){ ? ? ? ? ? ? if (![responder isKindOfClass:[UIViewController class]]) { ? ? ? ? ? ? ? ? return YES; ? ? ? ? ? ? } else if ([responder isKindOfClass:[UINavigationController class]]) { ? ? ? ? ? ? ? ? return YES; ? ? ? ? ? ? } else if ([responder isKindOfClass:[UITabBarController class]]) { ? ? ? ? ? ? ? ? return YES; ? ? ? ? ? ? } else if ([responder isKindOfClass:NSClassFromString(@"UIInputWindowController")]) { ? ? ? ? ? ? ? ? return YES; ? ? ? ? ? ? } ? ? ? ? ? ? return NO; ? ? ? ? }; ?? ? ? ? ? ? ? ? UIResponder *nextResponder = tempView.nextResponder; ?? ? ? ? ? ? ? ? while (canNext(nextResponder)) { ? ? ? ? ? ? tempView = tempView.subviews.firstObject; ? ? ? ? ? ? if (!tempView) { ? ? ? ? ? ? ? ? return nil; ? ? ? ? ? ? } ? ? ? ? ? ? nextResponder = tempView.nextResponder; ? ? ? ? } ?? ? ? ? ? ? ? ? UIViewController *currentVC = (UIViewController *)nextResponder; ? ? ? ? if (currentVC) { ? ? ? ? ? ? return currentVC; ? ? ? ? } ? ? } ? ? return nil; ?? ? }

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容