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按照我的意愿弯曲。

我编辑了我的问题,现在工作正常的代码。