tabbar应用程序中的loginview问题

时间:2010-01-09 22:06:32

标签: iphone tabbar loginview

我的应用中有一个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];
}

第三个标签栏是一个设置视图,我在那里有一个注销按钮。 在第一次,我可以看到正确的用户名,但只要我点击退出我正在使用app delegate调用上面显示的相同方法。 logview正确获取popedup,如果我以不同的用户身份登录,它仍会显示以前的用户名(因为第三个标签栏视图已经加载) 所以我的问题是 1)这是放置loginview的最佳位置 2)如何重置应用程序,无需在注销后重新启动它 我希望我的问题很明确。或者我愿意提供更多细节 谢谢。
更新 基本上我想在注销时卸载所有视图并从头开始。

2 个答案:

答案 0 :(得分:0)

更好的方法是在您的设置控制器上创建一个公共changeLoginName:方法,并在用户登录时从登录视图调用该方法。如果您不保留,可以通过标签栏访问该视图在其他地方指向它。

答案 1 :(得分: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];
}

我希望这会从内存中卸载所有视图并强制它们在tabbar切换时再次加载。我知道这不是好方法。

相关问题