NSNotificationCenter用于呈现多个模态?

时间:2011-07-12 09:04:40

标签: objective-c ios cocoa-touch modalviewcontroller nsnotificationcenter

我有一个app委托,其默认视图应该是模态视图控制器,有时是两个模态视图控制器。所以在app delegate的didFinishLaunchingWithOptions中,我正在检查是否需要,并在那种情况下显示第一个模态视图控制器。

在关闭第一个模态视图控制器(使用[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];
    }
}

更新:上述代码适用于以下更正:

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

1 个答案:

答案 0 :(得分:1)

在这种特殊情况下,我认为不需要NSNotificationCenter。我试图显示多个模态视图控制器,但我犯了一个错误。

当从模态视图控制器A显示模态视图控制器B时,它工作正常。我曾尝试从父视图控制器中呈现模态视图控制器A和B.

因此,当在层次结构中呈现模态视图控制器时,不需要NSNotificationCenter。视图控制器正在解雇自己,动画可​​以工作,而且我更进一步弯曲UIKit。

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