UIにストーリーボードを使用していますが、次のものがあります。
セグエの初期ビューであるログインウィンドウ。ログインが成功すると、ログインページに戻るボタンがない別のビューにユーザーが移動します。これはでUITabBarController
あり、独自のナビゲーションバーがあります。これで、両方のナビゲーションバーが表示され、戻るボタンがアプリ全体に表示されます。
戻るボタンをタップすると、常にログインビューが表示されます。何か案は?
UIにストーリーボードを使用していますが、次のものがあります。
セグエの初期ビューであるログインウィンドウ。ログインが成功すると、ログインページに戻るボタンがない別のビューにユーザーが移動します。これはでUITabBarController
あり、独自のナビゲーションバーがあります。これで、両方のナビゲーションバーが表示され、戻るボタンがアプリ全体に表示されます。
戻るボタンをタップすると、常にログインビューが表示されます。何か案は?
バー全体を非表示にしますか?
もしそうなら:
[self.navigationController setNavigationBarHidden:YES animated:NO];
それとも、戻るボタンを非表示にしますか?
[self.navigationItem setHidesBackButton:YES animated:NO]
ストーリーボードモードでは、ナビゲーションコントローラーがある場所を左に見る必要があります。戻るボタンが不要な場合、またはいずれかを非表示にする場合は、ナビゲーションバーを削除できます。
[self.navigationController setNavigationBarHidden:YES animated:NO];
ただし、navコントローラーで行うことであるView Controllerスタックにプッシュするよりも、ログイン画面を実行するためのより良い方法があります。
ログインを行うための良い方法は、モーダルビューコントローラーを提示してから、ナビゲーションコントローラーなしでそれを閉じることです。このようにすると、すでにログインしている場合はログイン画面に戻ることができなくなります。アプリデリゲートでグローバルブール変数を設定するだけで、アプリ全体がログインしていることを認識でき、後でその変数をテストできます。モーダルログインページを閉じます。
そうすれば、通常は必要のないナビゲーションコントローラーがいくつかありません。
乾杯
これは、ナビゲーションコントローラーがある場合に発生します。ナビゲーションコントローラーは、セグエするすべてのコントローラーのビューにステータスバーを追加し、すべてのコントローラーのビューに独自のナビゲーションバーを追加します。
a)コントローラーが侵入するための専用ナビゲーションバーを取り除くだけです
b)ナビゲーションコントローラーを使用せず、コントローラーのビューにモーダルプッシュを実行します
[currentController presentModalViewController:controllerYouWantToShow animated:YES]
c)ナビゲーションコントローラーのナビゲーションバーですが、それは奇妙な振る舞いを与え、実際にはブルートフォースであり、それを実行するための最良の方法ではないため、お勧めしません。
ナビゲーションコントローラーとプッシュセグエを使用する場合は、ナビゲーションコントローラーの性質上、[戻る]ボタンが表示されます。必要なのは(「ログインページに戻るボタンがない」)、ナビゲーションコントローラーのスタックをリセットして、ログインビューコントローラーが含まれないようにすることです。カスタムセグエでそれを行うことができるはずです(それらは簡単に書くことができます)。もう1つのオプションは、ログインビューコントローラをモーダルで表示することです。これは、ログイン画面を実行するための非常に一般的な方法です。