2011-12-04 3 views
0

私たちはタブバー+ナビゲーションコントロールプロジェクトを持っています。我々は、インターフェイスビルダーを介してタブバーを作成し、インターフェイスビルダーを介してタブバーコントローラにすべてのタブアイテムを追加しました。 アプリケーションには最初にモーダルフォームとして表示されるログイン画面があります。ユーザーが認証されると、ログイン画面が閉じられ(dismissModalScreenを使用)、MainWindowが表示されます。これはすべて正常に動作しています。iPhoneアプリケーションのログアウト時のtabbarcontrollerビューの更新

ここで、ログアウトオプションをクリックしてログイン画面を表示してください。私たちもそのことを示すことができます。しかし、問題はユーザーが再度認証されると、すべての画面を新しくロードすることです。現在、すべての画面は状態を維持し、以前のデータを保持します。私たちがしようとしている何

は次のとおりです。

[AppDelegate tabBarControllerリリース];

AppDelegate.tabBarController = nil;

私たちはtabBarControllerを解放し、それをnilに設定しようとしました。しかし、ビューが表示されたら、タブを選択することができず、ビューは空白になります。私たちが必要なもの

は次のとおりです。二時間、ユーザーがログインしたら

、タブバーの一部である各のViewControllerを解放し、リロードする方法について説明します。

お手数をおかけします。

答えて

0

私たちは方法を見つけました。私たちがやっていることは、ユーザーがいったんログインすれば、View Controllerを解放して再作成し、それをuitabbarに戻すことです。

NSMutableArray * arrControllers = [[AppDelegate.tabBarController.viewControllers] mutablecopy]; [arrControllers removeAtIndex:3]; [arrControllers removeAtIndex:2];

----新規作成コントローラ

のUIViewController viewController2 = [[のUIViewControllerのalloc] initWithNibName: "viewController2" バンドル@:nilを]自動リリース];

UIViewController viewController3 = [[UIViewController alloc] initWithNibName:@ "viewController3" bundle:nil] autorelease];

--createナビゲーションコントローラ

UINavigationController navViewController2 = [[[UINavigationController ALLOC] initWithRootViewController:viewController2]自動解放]。

UINavigationController navViewController3 = [[[UINavigationController alloc] initWithRootViewController:viewController3] autorelease];

[arrControllers addObject:navViewController2];

[arrControllers addObject:navViewController3];

[AppDelegate.tabViewController setViewController:arrControllers];

この変更後は正常に動作しています。

私たちがアレイからすべてのオブジェクトをリリースすれば問題になりました。私たちはcarshを手に入れました。それは、あなたがallObjectを解放すると、RootViewControllerである最初のコントローラが解放されているからですか?

ありがとうございました

関連する問題