当应用程序启动时,我在验证它被重定向到标签栏控制器的字段后放置了一个视图控制器(登录)。问题是我必须放置注销按钮,当单击注销按钮时,它应该转到根视图控制器(登录页面)。我尝试从标签栏控制器推送到根视图控制器,它被推送但在继续进行时仍然面临一些标签栏问题。如何从标签栏项目弹出/推送到根视图控制器?
4 回答
我想在您的 AppDelegate.m 中,您已经创建了一个导航控制器,其中 LoginUIViewController 作为 RootViewController。
你可以这样解决问题:
例如,您的TabBarController中有一个FirstTabUIViewController,您想从 FirstTabUIViewController 返回到您的LoginUIViewController(您的 RootViewController)。
在 FirstTabUIViewController.h 和 .m 中创建对 TabBarController 的引用
@property (strong, nonatomic) IBOutlet UITabBarController *tabBarController;
@synthesize tabBarController = _tabBarController;
创建方法处理“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
有一些关于自定义后退按钮的示例。如果你想使用默认的后退按钮,你可以重命名为注销并对其进行操作。
只是一个想法。
当您单击注销按钮时,您只需要再次将登录屏幕放置在 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];