ここで非常に興味深い問題が発生しました。私の iPhone アプリには、AppDelegate の rootViewController として UITabbarController があります。
アプリを初めて開いた場合は、基本的に設定する必要があります。この目的のために、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 では、メイン ウィンドウの rootViewController として UITabbarController を使用しています。
self.window.rootViewController = self.tabBarController;
[self.window makeKeyAndVisible];
次に、UINavigationController を作成し、UITabbarController に modalViewController を提示するように指示します。
UINavigationController *navCtrl = [[UINavigationController alloc] initWithRootViewController:firstRun];
[[self tabBarController] presentModalViewController:navCtrl animated:NO];
-dismissModalViewControllerAnimated: を firstViewController で呼び出すと、上記のエラーが発生します。