我有一个取得密码的模态视图控制器。由于我不希望在我的应用程序中断时将密码写入磁盘,因此我想在applicationWillResignActive
上输入密码。 (对于那些可能发表评论的人,我知道安全文本字段没有正确归零)。iPhone:如何枚举视图控制器?
我试过下面的代码,我的视图控制器永远不会被找到。对于第一组代码(UIView),我相信它是因为我混合并匹配视图和视图控制器。我不确定为什么第二组代码(UIViewController)不能工作,因为有几个人已经提出了它。
如何枚举视图控制器并找到感兴趣的控制器?我只是想发送clearPassworAndPin
到PasswordPromptController
如果存在(因为viewWillDisappear
并不总是当视图消失时发送)。
杰夫
修改7KV7和Jhaliya答案是低于(它的工作)。使用viewController.modalViewController
的'if'语句被执行5次(在选项卡视图中每个控制器执行一次)。所以感兴趣的单个模态控制器被发送了5次的clearPasswords
消息。
for (UIViewController * viewController in viewsControllers)
{
if ([viewController isKindOfClass:passwordPromptClass])
{
[(PasswordPromptController *)viewController clearPassworAndPin];
}
else
{
if(viewController.modalViewController)
[self clearPasswords:[NSArray arrayWithObjects:viewController.modalViewController, nil]];
}
}
使用UIViews(无欢)
- (void)applicationWillResignActive:(UIApplication *)application
{
if(application.windows != nil)
[self clearPasswords:application.windows];
}
- (void)clearPasswords:(NSArray *)subviews
{
Class passwordPromptClass = [PasswordPromptController class];
for (UIView * subview in subviews)
{
if ([subview isKindOfClass:passwordPromptClass])
[(PasswordPromptController *)subview clearPassworAndPin];
}
}
使用的UIViewController(无欢)
- (void)applicationWillResignActive:(UIApplication *)application
{
if(tabBarController.viewControllers != nil)
[self clearPasswords:tabBarController.viewControllers];
}
- (void)clearPasswords:(NSArray *)viewsControllers
{
Class passwordPromptClass = [PasswordPromptController class];
for (UIViewController * viewController in viewsControllers)
{
if ([viewController isKindOfClass:passwordPromptClass])
[(PasswordPromptController *)viewController clearPassworAndPin];
}
}
我修改了'UIViewController'下显示的代码 - 没有喜悦。 clearPasswords方法被调用,并且控制器似乎被枚举。但没有匹配。是的苹果 - 我认为他们向后弯曲,使他们的狗屎不安全。如果([viewController isKindOfClass:passwordPromptClass]) [viewController clearPassworAndPin];如果(视图控制器是KindOfClass:passwordPromptClass) – jww 2011-04-26 04:45:29
' for(UIViewController * viewController in viewsControllers) { }这不够吗 – visakh7 2011-04-26 04:55:59
不幸的是,代码是不够的。它显示了5个视图控制器,它们与标签栏中的5个视图相对应。模式提供的PasswordPrompt不在控制器列表中。 – jww 2011-04-26 05:16:51