繁体   English   中英

从标签栏控制器注销到根视图控制器

[英]Logout from tab bar controller to Root view controller

当应用程序启动时,我在验证字段后将其重定向到标签栏控制器后放置了一个视图控制器(登录)。 问题是我必须放置注销按钮,当点击注销按钮时,它应该转到根视图控制器(登录页面)。 我尝试从标签栏控制器推送到根视图控制器,它被推送但仍然面临很少的标签栏问题,同时继续前进。 如何从标签栏项目弹出/推送到根视图控制器?

我想在您的AppDelegate.m中,您已经使用LoginUIViewController创建了一个导航控制器作为RootViewController。

你可以解决这个问题:

例如,你的TabBarController中有一个FirstTabUIViewController ,你想从FirstTabUIViewController返回你的LoginUIViewController (你的RootViewController)。

  1. 在FirstTabUIViewController.h和.m中创建对TabBarController的引用

    @property(强,非原子)IBOutlet UITabBarController * tabBarController;

    @synthesize tabBarController = _tabBarController;

  2. 创建一个方法句柄“LogOut”按钮单击.m

    - (IBAction)logoutBtnTapped:(UIBarButtonItem *)sender {

    [self.tabBarController.navigationController popToRootViewControllerAnimated:YES];

    }

这是! 希望有帮助:)

也许你可以使用UINavigationController作为根视图控制器http://developer.apple.com/library/ios/#documentation/uikit/reference/UINavigationController_Class/Reference/Reference.html

有一些关于自定义后退按钮的示例。 如果要使用默认后退按钮,可以将其重命名为logout并对其进行操作。

只是一个想法。

您只需在单击注销按钮时再次将登录屏幕置于appdelegate窗口中。

LoginViewController *loginVC = [[LoginViewController alloc]init]; 
AppDelegate *appDelegate = [UIApplication sharedApplication].delegate;
[appDelegate.window setRootViewController:loginVC];// This will initiate the login screen again

在同样的情况下,这对我来说很好,

ChooseStateViewController *loginVC = [[ChooseStateViewController alloc]initWithNibName:@"ChooseStateViewController" bundle:nil]; 

UINavigationController *nc = [[UINavigationController alloc] initWithRootViewController:loginVC];
[nc.navigationBar setTintColor:[UIColor blackColor]];
AppDelegate *appDelegate = (AppDelegate*)[UIApplication sharedApplication].delegate;
[appDelegate.window setRootViewController:nc];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM