我在这里遇到了一个非常有趣的问题。我的 iPhone 应用程序在 AppDelegate 中有一个 UITabbarController 作为 rootViewController。
如果是第一次打开app,基本都要配置好。为此,我创建了一个 UINavigationController 并告诉 tabbarController 以模态方式呈现它:
firstRun = [[firstRunViewController alloc] init];
navCtrl = [[UINavigationController alloc] initWithRootViewController:firstRun];
[[self tabBarController] presentModalViewController:navCtrl animated:NO];
配置完成后,我想摆脱 firstRunViewController。我经常使用这种技术,使用-dismissModalViewControllerAnimated:
.
但在这个星座中这是行不通的。我将哪个控制器称为解雇并不重要。我通过 tabbarController、rootViewController、当前活动的 viewController、原因 self 和其他几个控制器进行了尝试。
每次我打电话-dismissModalViewControllerAnimated:
都会遇到这个异常:
'UIViewControllerHierarchyInconsistency', reason: 'presentedViewController for controller is itself on dismiss for: <UINavigationController:…
有人可以帮忙吗?在此先感谢,致以诚挚的问候,朱利安
编辑 在我的 AppDelegate 中,我使用 UITabbarController 作为主窗口的 rootViewController:
self.window.rootViewController = self.tabBarController;
[self.window makeKeyAndVisible];
然后我创建一个 UINavigationController 并告诉 UITabbarController 呈现 modalViewController:
UINavigationController *navCtrl = [[UINavigationController alloc] initWithRootViewController:firstRun];
[[self tabBarController] presentModalViewController:navCtrl animated:NO];
当我现在在 firstViewController 上调用 -dismissModalViewControllerAnimated: 时,我收到了上面的错误。