在我的应用程序中,我有一个登录屏幕,我在启动时以模态方式呈现。成功登录后,用户将被重定向到UITabBarController,它有五个UINavigationController(用于选项卡)。
在一个标签上,我有一个“注销”按钮,以便用户被重定向回登录屏幕。 这很好。
但我想要做的是每次用户登录时加载UITabBarController。这意味着不应该重用UITabBarController。目前,标签中的内容(我从网上加载数据)保持不变,即使新登录完成也是如此。
如何使用UINavigationcontrollers发布/弹出/忽略UITabBarController?
到目前为止我尝试了什么:
当我按下“退出”按钮时,我将用户推回登录界面:
[self.navigationController presentModalViewController:navigContrLogin animated:YES];
[[self navigationController] popToRootViewControllerAnimated:YES]; --> NOT WORKING
[self.navigationController popViewControllerAnimated:NO]; --> NOT WORKING
[self.tabBarController release]; ---> NOT WORKING
有人可以帮帮我吗?
编辑: 这是我如何添加UITabBarController。我在用户单击“登录”按钮时执行此操作:
[self.navigationController dismissModalViewControllerAnimated:NO];
[self.navigationController setNavigationBarHidden:YES];
[self.navigationController pushViewController:tabBarController animated:NO];
[self.navigationController removeFromParentViewController];
EDIT2:我解决了。我正在做的是当用户点击退出按钮时,我从应用委托调用导航控制器并使用它来推送登录视图控制器。
MyAppDelegate *del = (MyAppDelegate*)[UIApplication sharedApplication].delegate;
[del.navControllerLogin pushViewController:loginController animated:YES];
答案 0 :(得分:0)
您是否尝试将其从superview中删除然后将其释放?然后添加新的ViewControllers?
for (UIView *view in self.window.subviews){
if (view == tabBarController.view) {
[view removeFromSuperview];
}
}
[tabBarController release];
UITabBarController *newTabBarController = [[UITabBarController alloc] init];
newTabBarController.viewControllers = nil; //ADD NEW VIEWCONTROLLERS
[self.window addSubview:newTabBarController.view];
答案 1 :(得分:0)
我不会这样做。因为从子视图管理(发布/零)父视图不是一个好习惯。
答案 2 :(得分:0)
我将从appDelegate添加和删除模态视图控制器和tabbarcontroller。
[myAppDelegate addLoginViewController];
[myAppDelegate removeLoginViewController];
[myAppDelegate addTabBarController];
[myAppDelegate removeTabBarController];