2012-05-04 130 views
0

我有一个已经分裂标签栏里面查看一个应用程序,而这些分裂的观点往往具有导航层次结构,然后有时候模态的看法是在它们上面的礼物,而这一切工作正常,但...获取当前视图

我想显示每当应用进入后台密码锁,于是我就把

[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

我认为最简单的方法就是跟踪哪个选项卡是当前活动的(有有很多方法可以做到这一点,但我建议实施UITabBarControllerDelegate并处理其方法tabBarController:didSelectViewController:)。

一旦这样做了,你可能需要管理的是持有任何模式视图控制器,你现在每个视图控制器属性。但是,如果您使用iOS 5或更高版本,请查看UIViewController属性presentedViewController。看起来,这是一种完全按照你的意愿去做的新方法。

+0

我想我可以通过没有的TabBar代表应用程序的委托访问标签栏选中的标签属性,但现在我的问题是,是否有,比方说,下面的层次,“呈现视图控制器”是否奏效? 的TabBar - >拆分视图 - >导航 - >推视图 - >推视图 - >模式视图 - >模式的看法 – Tim

+0

蒂姆,我敢肯定,这就是为什么他们实施新的'presentedViewController '在IOS 5,房产看看文档[这里](http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/ModalViewControllers/ModalViewControllers.html#//apple_ref/doc/uid/TP40007457 -CH111-SW1)。我认为这是你想要的,不是吗? – mbm29414

+0

这听起来像我将不得不遍历视图控制器堆栈,直到没有更多的presentViewControllers,但这可能会伎俩。谢谢。 – Tim