情况是:
我想知道将要呈现哪个视图控制器。我正在寻找类似的东西:
- (void)applicationDidBecomeActive:(UIApplication *)application {
if ([self.window.viewControllerOnScreen isKindOfClass:[HomeViewController class]]) {
//do sthg
}
}
因为如果是家庭视图控制器(嵌入导航控制器并使用故事板),我会执行一些重载方法。
答案 0 :(得分:3)
[[self.navigationController viewControllers] lastObject];
第一部分将为您提供堆栈中所有viewControllers的数组,最后一个对象是当前显示的对象。检查它的类类型,看它是homeViewController
答案 1 :(得分:2)
根据此link当应用进入后台时,每个对象都会收到UIApplicationDidEnterBackgroundNotification
通知。同样,当应用程序进入前台时,UIApplicationWillEnterForegroundNotification
会被触发。
因此您可以使用它来跟踪应用进入前景时打开哪个视图控制器
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(appEnteredForeground:)
name:UIApplicationDidEnterForegroundNotification
object:nil];
答案 2 :(得分:0)
试试这个
- (UIViewController *)topViewController{
return [self topViewController:[UIApplication sharedApplication].keyWindow.rootViewController];
}
- (UIViewController *)topViewController:(UIViewController *)rootViewController
{
if (rootViewController.presentedViewController == nil) {
return rootViewController;
}
if ([rootViewController.presentedViewController isMemberOfClass:[UINavigationController class]]) {
UINavigationController *navigationController = (UINavigationController *)rootViewController.presentedViewController;
UIViewController *lastViewController = [[navigationController viewControllers] lastObject];
return [self topViewController:lastViewController];
}
UIViewController *presentedViewController = (UIViewController *)rootViewController.presentedViewController;
return [self topViewController:presentedViewController];
}
答案 3 :(得分:0)
我这样做是为了获取当前的viewController
if (![[appDelegate.rootNavController topViewController] isMemberOfClass:NSClassFromString(@"LGChatViewController")]) {}
答案 4 :(得分:-1)
self.tabBarController.viewControllers = [NSArray arrayWithObjects: [self LoadAccount], [self LoadContacts], [self LoadPhoneLine], [self LoadSettings], nil];
如果您使用标签栏,那么您可以像这样设置并显示第一个帐户并继续......