1

これは非常に一般的な質問ですが、問題を修正するために多くのことを試みた後、最終的にStackOverFlow.comに投稿することにしました

タブバーベースのアプリがあります。タブバーは、次のようにAppDelegate.mにロードされます。

  self.tabBarController.viewControllers = @[viewController1, viewController2 , viewController3 , viewController4 , viewController5];

5番目のタブにはログアウト用のボタンがあります。ユーザーがログアウトをクリックしたら、アプリ全体をクリア/リセットして、モーダルビューコントローラーであるログインページに移動します。

ログアウト中にフォローしてみました:

 NSMutableArray * vcs = [NSMutableArray
                        arrayWithArray:[self.tabBarController viewControllers]];
[vcs removeAllObjects ];//ObjectAtIndex:4];
[self.tabBarController setViewControllers:vcs];

これにより、タブバーからすべてのビューが削除されます。しかし、再度ログインすると何も表示されません。ホーム画面、つまりデフォルトで選択されているタブ項目1を表示したい。

手動でdidFinishLaunchingWithOptionsを再度呼び出すのは良い習慣ではないことを読みました。

すべてのタブバーをリセットして再初期化する方法はありますか?

これは、この状況に関連するもう1つの問題を解決するのに役立ちます。ユーザーがログアウトして再度ログインし、View Controllerがクリアされていない場合、ログイン後にログアウトページが再度表示されます。そして、ホームビューコントローラーではありません。

助けてください。

前もって感謝します。

4

4 に答える 4

2

本当に最初からやり直したい場合は、メソッドを配置して、アプリデリゲートで-(void)setupTabBarControllerと呼び、起動時にapplication:didFinishLaunchingWithOptions:から呼び出す必要があります。後でリセットする場合は、ログインページからそのメソッドを再度呼び出します。この方法では、すべてのタブバーコントローラーのビューコントローラーを作成し、タブバーコントローラーをウィンドウのルートビューコントローラーとして設定します。

ただし、ログアウト時にこれらすべてのコントローラーがどのような状態にあるかによっては、これを行う必要があるかどうかは明確ではありません。ログアウトページが再度表示される問題は、おそらくもっと簡単な方法で修正できます。

于 2013-02-26T02:31:00.260 に答える
1

ビューを削除して、再び追加しなかったため、何も表示されていません。

ログアウトした後、タブバーからViewControllerを削除する必要はありません。各ViewControllerのすべてのデータをリセットするメソッドを記述してから、選択したタブを目的のタブに設定するだけです。

于 2013-02-26T02:28:09.790 に答える
1

私は知っています、これはあなたの質問に対する実際の答えではありませんが、これはおそらくあなたにも役立つかもしれません(そして私はまだ投稿にコメントできないので私はこのように投稿する必要があります:))。

ユーザーがタブバーアプリからログアウトしたときにも、ナビゲーションスタックを「リセット」する際に問題が発生しました。最初は、タブバーコントローラーをルートコントローラーとして使用し、ログイン画面をモーダルに表示していましたが、ユーザーがログアウトしたら、静かにナビゲーションスタックをハードリセットしました。私がやったことは、静かにうまく機能することです。ログインコントローラーをrootコントローラーとして設定し、ログイン後にタブナビゲーションをモーダルに表示しました。ログアウトしたら、タブバーコントローラーをもう一度閉じます。すべてが最初からやり直します。たぶん、これを試して、扱いやすいかどうかを確認することができます。

于 2013-02-26T03:20:00.203 に答える
0

2番目のViewControllerにtabBarコントローラを追加する必要があります。メインビューコントローラはホーム画面を表示します。2番目のViewControllerをナビゲートするときは、ここにtabBarを追加します。

于 2013-02-26T04:17:12.150 に答える