1

我有一个应用程序委托,其默认视图之前应该有一个模态视图控制器,有时还有两个模态视图控制器。因此,在应用程序委托中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];
    }
4

1 回答 1

1

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

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

因此,当在层次结构中呈现模态视图控制器时,不需要NSNotificationCenter. 视图控制器正在解散自己,动画可​​以正常工作,而我朝着将 UIKit 弯曲到我的意愿又迈进了一步。

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

于 2011-07-12T09:30:38.083 回答