2015-01-10 49 views
0

我有一個iOS應用這種結構知道,如果一推的viewController可見

SplitViewController 
    | | 
    | |________ TableViewControllerA 
    | 
    |________ NavigationController > ViewControllerB > ViewController C 
             | 
             | 
            ViewControllerX 

只要VCB負載,它觸發其viewWillAppear中推SEGUE顯示ViewControllerX。

這個ViewControllerX不在應用程序的常規流程中,它只是一個viewController,顯示消息「選擇一個選項」,告訴用戶在VCA上選擇一個選項。

只要用戶在VCA上選擇一個選項,該VCX就不得不離開,揭示VCB落後。

我在這個VCX上有一個展開的順序來做到這一點,但我怎麼知道VCX是否可見?

VCA上執行的操作如何觸發VCX上的退出繼續,VCX可以退出並顯示VCB?

我從VCA試過,但它沒有任何效果

ChooseOption *chooseOption = [[self storyboard] instantiateViewControllerWithIdentifier:@"chooseOption"]; 
    [chooseOption performSegueWithIdentifier:@"unwindChooseOption" sender:nil]; 

choseOption是不是在這一點零。

+0

'chooseOption'可能不是零,但它也不是您希望放鬆的VCX實例。 (我假設ChooseOption == VCX。) –

回答

0

你可以用不同的方式做到這一點,我認爲這取決於上下文。

您是否嘗試過這樣做的:

if(self.navigationController.visibleViewController == self){ 

} 

if([self.navigationController.visibleViewController isKindOfClass:[VCX class]]){ 

} 

順便說一下......如果VCX由navigationControlller模態呈現,你可以這樣做:

if([self.navigationController.presentedViewController && [self.navigationController.presentedViewController isKindOfCLass:[VCX class]]){ 

} 
+0

好的,明白了!謝謝! – SpaceDog

+0

哈哈太棒了,很高興聽到:) –

1

我d看看使用NSNotificationCenter。當用戶在VCA中執行您想要跟蹤的內容時,發佈通知。讓VCX在出現該通知時收聽該通知,並在該通知消失時停止收聽。

如果VCX收到通知,它將展開。如果它不在屏幕上,則沒有其他人關心通知並且忽略它。

+0

謝謝,這也是一個好主意。 – SpaceDog

相關問題