我有一个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];
}
答案 0 :(得分:1)
在这种特殊情况下,我认为不需要NSNotificationCenter
。我试图显示多个模态视图控制器,但我犯了一个错误。
当从模态视图控制器A显示模态视图控制器B时,它工作正常。我曾尝试从父视图控制器中呈现模态视图控制器A和B.
因此,当在层次结构中呈现模态视图控制器时,不需要NSNotificationCenter
。视图控制器正在解雇自己,动画可以工作,而且我更进一步弯曲UIKit。
我已经在我的问题中编辑了代码,现在工作正常。