2012-05-04 166 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