2015-08-26 18 views
0

我有個視圖層次獲得從不同的UINavigationController頂部的UIViewController不參考

一個)UINavigationController> B)UIViewController> C)UITabbarController> d)UINavigationController

好,現在在應用程序的任何點,我'in in b | c | d - 我添加了通知來處理(並檢查)用戶是否前往(或前來)後臺/前臺。

這很好,但是如果用戶來到前臺 - 我在一個不同的(新)UINavigationController對象中提出了一個UIViewController(讓我們命名爲'z')。

這也是很好的..但是,如果我已經在z和用戶去背景和前景,我不應該再次顯示Z,因爲它已經可見。

問題我面對:

  • 我不要讓不同的(新)UINavigationController對象的引用,甚至的z參考。

  • 所以 - 我怎麼捕捉到當前可見的視圖是z本身?

如果其從相同的導航控制器(如一個)我可以通過其屬性topViewController檢測到它。但在這裏我不能?

任何方式來完成這項工作,但沒有創建它的參考?

+0

請添加一些代碼 –

+0

@VarunNaharia , 謝謝!但不需要,因爲我在谷歌上搜索並找出很多問題(從StackOverflow明顯!),但沒有任何信息保證他們的承諾:(我正在尋找一個不同的案例。 – Hemang

回答

0

您可以在窗口的根視圖控制器上顯示控制器(您的情況爲zController)並檢查它是否已經呈現。

當前根視圖控制器上的控制器,

//Use this code to present the zController 
    UIViewController *rootViewController =[[[[UIApplication sharedApplication] delegate] window] rootViewController]; 
    [rootViewController presentViewController:zController animated:YES completion:nil]; 

,當應用程序進入前臺,您可以檢查是否控制器已經提出如下,

- (BOOL)checkIfzControllerIsAlreadyPresented 
{ 
    UIViewController *rootViewController =[[[[UIApplication sharedApplication] delegate] window] rootViewController]; 
    id obj = rootViewController.presentedViewController; 
    if (obj && [obj isKindOfClass:[zController class]]) { 
     return YES; //zController is already visble 
    } 
    return NO; 
} 
相關問題