0

ストーリーボードを使ったアプリがあります。レイアウトは次のとおりです。NavController>LoginView Controller> Tab Bar Controllerであり、各タブには、そのタブのUIViewControllerを指すNavControllerがあります。TabBarControllerを削除してLoginViewControllerに戻るログアウトボタンを作成しようとしています。私のコードは以下の通りです:

// In log out function
[self.tabBarController dismissViewControllerAnimated:YES completion:nil];
[self performSelector:@selector(patchSelector) withObject:nil afterDelay:0.3];

-(void)patchSelector{
    [self.tabBarController.navigationController popToRootViewControllerAnimated:YES];
}

次のエラーが発生し続けます。

*** Terminating app due to uncaught exception 'UIViewControllerHierarchyInconsistency', reason: 'presentedViewController for controller is itself on dismiss for

私はこれに関して以下を読んでみました:

dismissModalViewControllerAnimated:completionの表示可能なインターフェイスはありません

http://www.touchthatfruit.com/viewwillappear-and-viewdidappear-not-being-ca

UITabbarControllerはモーダルUINavigationControllerを閉じます

しかし、上記のどれも私が得ているエラーを助けませんでした。これに欠けているものはありますか?エラーは、現在のvcがクリーンアップされているものの中にあることを示しているようです。

4

1 に答える 1

0

最初のUINavigationController(ログイン画面の前のもの)を削除し、上の最初の行を次のように変更すると[self dismissModalViewControllerAnimated:YES];、動作します...ただし、モーダルセグエにした場合に限ります。最も簡単なソリューション。私の元の問題がなぜだったかはわかりませんが、少なくともこの方法で回避することができました!

于 2012-12-30T22:01:08.843 に答える