我有一個取得密碼的模態視圖控制器。由於我不希望在我的應用程序中斷時將密碼寫入磁盤,因此我想在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