0

アプリに3つのタブバーがあります。私のAppdelegateには、ユーザーがログインしていない場合にloginviewをポップアップするloginviewへの参照があります。ここにメソッドがあります。

 - (void)LoginView
{
loginView = [[[LoginViewController alloc] initWithNibName:@"LoginView" bundle:nil] autorelease]; 
UINavigationController* nav = (UINavigationController*)[tabBarController.viewControllers objectAtIndex:0]; 
loginView.navC = nav; [nav presentModalViewController:loginView animated:YES];
}

3番目のタブバーは設定ビューで、そこにサインアウトボタンがあります。最初は正しいユーザー名が表示されますが、[サインアウト]をクリックするとすぐに、アプリデリゲートを使用して上記と同じメソッドを呼び出します。logviewは正しくポップアップ表示され、別のユーザーとしてサインインしても以前のユーザー名が表示されます(3番目のタブバービューが既に読み込まれているため)ので、私の質問は
1)loginviewを配置するのに最適な場所です
2)アプリをリセットするにはどうすればよいですか? oサインアウト後に再起動する
私の質問が明確であることを願っています。または私はより多くの詳細を喜んで提供します。
ありがとう。
更新: 基本的に、サインアウト時にすべてのビューをアンロードして、最初から開始したいと思います。

4

2 に答える 2

0

これが適切な方法であることを願っています。これが私がやったことです。

NSArray *vc= tabBarController.viewControllers;
for (int i = 0; i < [vc count]; i++) {
    UINavigationController *nc = [vc objectAtIndex:i];
    if (nc == tabBarController.selectedViewController) {
        continue;
    }
    [nc popToRootViewControllerAnimated:NO];
}

これにより、すべてのビューがメモリからアンロードされ、タブバーが切り替えられたときに強制的に再度読み込まれることを願っています。これが良い方法でない場合はお知らせください。

于 2010-01-14T02:15:09.513 に答える
0

より良い方法は、設定コントローラーで public changeLoginName: メソッドを作成し、ユーザーがログインしているときにログイン ビューからそのメソッドを呼び出すことです。ポインターを保持しない場合は、タブ バーからそのビューにアクセスできます。どこか他の。

于 2010-01-09T22:58:14.137 に答える