1

我有一個應用程序委託,其默認視圖應先於模態視圖控制器,有時由兩個模態視圖控制器。所以在應用程序代理的didFinishLaunchingWithOptions中,我正在檢查是否需要,並在這種情況下顯示第一個模式視圖控制器。用於顯示多個模態的NSNotificationCenter?

解散第一個模態視圖控制器(使用[self dismissModalViewControllerAnimated:YES];)後,我可能想要顯示第二個模態視圖控制器。這也是應用程序委託人所知道的。

所以我的解決方案是使用NSNotificationCenter告訴應用程序委託,第一個模式視圖控制器現在已被解僱。當發生這種情況時,如果需要,應用程序委託可以顯示第二個模式視圖控制器。

它工作正常,但有更清潔的解決方案嗎?我認爲NSNotificationCenter真的很難看。


註上一次

我曾嘗試以顯示第一和didFinishLaunchingWithOptions內第二模態視圖控制器顯示多模態視圖控制器,但我從來沒有得到它的工作。下面是我的嘗試:

- (BOOL)application:(UIApplication *)application 
      didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 

    [window setRootViewController:tabBarController]; 
    [self.window makeKeyAndVisible]; 

    [tabBarController presentModalViewController:pinViewController animated:NO]; 

    if([self needsActivation]) { 
     [tabBarController presentModalViewController:activationViewController 
          animated:YES]; 
    } 
} 

UPDATE:上面的代碼適用於以下修正:

if([self needsActivation]) { 
     [pinViewController presentModalViewController:activationViewController 
          animated:YES]; 
    } 

回答

1

在這種特殊情況下,沒有必要爲NSNotificationCenter,因爲我以爲。我試圖顯示多個模式視圖控制器,但我犯了一個錯誤。

從模態視圖控制器A顯示模態視圖控制器B時,它工作正常。我曾嘗試從父視圖控制器呈現模態視圖控制器A和B.

因此,當在層次結構中呈現模態視圖控制器時,不需要NSNotificationCenter。視圖控制器正在解散他們自己,動畫效果很好,而且我更願意將UIKit按照我的意願彎曲。

我編輯了我的問題,現在工作正常的代碼。