最近項目中加入了推送通知伺帘,需要用到獲取到當前顯示的UIViewController昭躺,從而去做跳轉(zhuǎn),查閱相關(guān)資料伪嫁,找到了解決方法领炫,在這里記錄一下
- 添加創(chuàng)建UIViewController的分類,并添加相應方法张咳,如下
- (UIViewController *)visibleViewControllerIfExist {
if (self.presentedViewController) {
return [self.presentedViewController visibleViewControllerIfExist];
}
if ([self isKindOfClass:[UINavigationController class]]) {
return [((UINavigationController *)self).topViewController visibleViewControllerIfExist];
}
if ([self isKindOfClass:[UITabBarController class]]) {
return [((UITabBarController *)self).selectedViewController visibleViewControllerIfExist];
}
if ([self isViewLoaded] && self.view.window) {
return self;
} else {
NSLog(@"visibleViewControllerIfExist:帝洪,找不到可見的viewController。self = %@, self.view.window = %@", self, self.view.window);
return nil;
}
}
- 獲取當前顯示的控制器
+ (UIViewController *)visibleViewController {
UIViewController *rootViewController = [UIApplication sharedApplication].delegate.window.rootViewController;
UIViewController *visibleViewController = [rootViewController visibleViewControllerIfExist];
return visibleViewController;
}
經(jīng)過上面這兩步脚猾,就可以在任何地方獲取到當前顯示的控制器了葱峡。