我的应用中有一个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)如何重置应用程序,无需在注销后重新启动它
我希望我的问题很明确。或者我愿意提供更多细节
谢谢。
的更新
基本上我想在注销时卸载所有视图并从头开始。
答案 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切换时再次加载。我知道这不是好方法。