获取当前视图

时间:2012-05-04 10:13:04

标签: objective-c ios

我有一个应用程序,它在标签栏中有拆分视图,这些拆分视图通常有导航层次结构,有时模态视图会显示在它们之上,而且一切正常,但是......

我试图在应用程序进入后台时显示密码锁,所以我把

[self.window.rootViewController presentModalViewController:lockView animated:YES];

在我的AppDelegate方法中

- (void)applicationWillResignActive:(UIApplication *)application

...除非显示模态视图,否则工作正常。 如果模态视图打开,则不会显示密码。

有没有办法检索当前活动的视图控制器,以便我可以显示此锁定视图?

提前致谢

Cheerio


有效的代码如下:

BOOL hasKids = YES;
UIViewController *topViewController = (UIViewController*)[[(UITabBarController*)self.window.rootViewController viewControllers] objectAtIndex:((UITabBarController*)self.window.rootViewController).selectedIndex];

while (hasKids) {
    if (topViewController.presentedViewController) {
        hasKids = YES;
        topViewController = topViewController.presentedViewController;
    } else {
        hasKids = NO;
    }
}

[topViewController presentModalViewController:lockView animated:YES];`

1 个答案:

答案 0 :(得分:0)

我认为最简单的方法是跟踪当前哪个标签处于活动状态(有多种方法可以执行此操作,但我建议您实施UITabBarControllerDelegate并处理其tabBarController:didSelectViewController: } 方法)。

完成后,您可能需要在每个视图控制器中管理一个属性,该控制器包含您提供的任何模态视图控制器。但是,如果您使用的是iOS 5或更高版本,请查看UIViewController属性presentedViewController。看来这是一种新的方式来完全按照你的意愿行事。