0

次のようなストーリーボードを持つアプリがあります。ここに画像の説明を入力

1 のラベルが付いたシーンは、アプリケーションの初期ビューであり、ユーザーがアプリをロードしたときに最初に表示されるシーンです。それは事実上、私のログイン/サインアップ シーンです。

2 のラベルが付いたシーンはアプリの奥深くにあり、UITabBarController を介してアクセスされる UINavigationController に埋め込まれています。このシーンには、セッションをクリアし、ユーザーをシーン #1 に戻す [ログアウト] ボタンがあります。

最初のシーンに戻るための適切な方法は何ですか? 私はいくつかの異なる方法を試しましたが、成功はゼロに制限されていました。これが私が試したことです:

[[self navigationController] popToRootViewControllerAnimated:YES];

#2がロードされたとき(私は信じています)何もしません。それは事実上、現在のnavigationControllerのルートView Controllerです。

セグエ経由でプッシュ

シーン #1 をスタックに追加するだけで、ユーザーが設定に「戻る」ことができるため、実際には機能しません。このためにナビゲーションバーを非表示にできると思いますが、収集できることから、このメソッドはビューをスタックに追加するだけであり、ユーザーがこのアクションを繰り返すと、アプリは最終的にメモリ不足になるため、これを行うべきではありませんクラッシュします。

AppDelegate *delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; [[delegate.window rootViewController] rejectModalViewControllerAnimated:YES];

これにより、すべてがクリアされて最初のビューに戻るように見えますが、シーンを操作すると (ログインまたはサインアップ ボタンをタップするなど)、次のようなエラーが発生します。

** キャッチされない例外 'NSInvalidArgumentException' が原因でアプリを終了しています。

これを解決するためにあなたが提供できるかもしれない助けを大いに感謝します. 私はこれに数日間携わっており、関連性があると思われるできるだけ多くのSOの質問を読み、Appleのドキュメントを読み込もうとしましたが(ただし、 UINavigationBarController リファレンスの外でどこから始めればよいかわかりませんでした)、Google検索の結果.

私はこのタイプのプログラミングを数週間しか行っていないので、これがばかげた質問である場合は申し訳ありません。問題に対する成功した解決策を見つけることができず、それは私にとって少し障害です.この時点で。

4

1 に答える 1

1

これは機能します:

- (IBAction)pop:(id)sender {

    [self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:0] animated:YES];
}
于 2012-10-19T23:39:44.273 に答える