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];
}

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

4

2 回答 2

0

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

于 2010-01-09T22:58:14.137 回答
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 回答