我有一个应用程序,它在标签栏中有拆分视图,这些拆分视图通常有导航层次结构,有时模态视图会显示在它们之上,而且一切正常,但是......
我试图在应用程序进入后台时显示密码锁,所以我把
[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];`
答案 0 :(得分:0)
我认为最简单的方法是跟踪当前哪个标签处于活动状态(有多种方法可以执行此操作,但我建议您实施UITabBarControllerDelegate
并处理其tabBarController:didSelectViewController:
} 方法)。
完成后,您可能需要在每个视图控制器中管理一个属性,该控制器包含您提供的任何模态视图控制器。但是,如果您使用的是iOS 5或更高版本,请查看UIViewController
属性presentedViewController
。看来这是一种新的方式来完全按照你的意愿行事。