我正在尝试从条目viewController(LoginViewController)成功传递时,Tab Bar打开第二个选项卡项。如果Tab Bar是应用程序的入口点,我知道该怎么做,这段代码在appDelegate.m文件中:
UITabBarController *tabBar = (UITabBarController *)self.window.rootViewController;
[tabBar setSelectedIndex:1];
但这次对我帮助不大。
我开始想,也许解决方案是为Tab Bar Controller创建一个自定义类,但我不知道该怎么做。
现在,当用户成功登录时,这行代码控制着LoginViewController(button)和TabBarController之间的segue。
[self performSegueWithIdentifier:@"loginToTabBarSegue" sender:self];
答案 0 :(得分:3)
我在DP2的stackoverflow上找到了this answer,这是我问题的解决方案。
这是我在用户成功登录时放入登录按钮的代码行。
UITabBarController *loadTabBar = [self.storyboard instantiateViewControllerWithIdentifier:@"TabBarViewControllerID"];
loadTabBar.selectedIndex=1;
[self presentViewController:loadTabBar animated:YES completion:nil];
感谢大家的帮助!
答案 1 :(得分:0)
尝试使用标签栏:
UINavigationController *nav = (UINavigationController *)self.window.rootViewController;
[nav.topViewController.tabBarController setSelectedIndex:1];
答案 2 :(得分:0)
您错误地使用了UITabBarController。标签栏控制器永远不应嵌入导航控制器中。来自Apple的文档:
因为UITabBarController类继承自UIViewController类,所以选项卡栏控制器具有可通过view属性访问的自己的视图。部署选项卡栏界面时,必须将此视图安装为窗口的根目录。与其他视图控制器不同,标签栏界面不应该作为另一个视图控制器的子项安装。
您似乎希望用户在使用您的应用之前登录。标签栏控制器包含应用程序UI的大部分内容。考虑将Tab栏控制器设置为应用程序的根视图控制器,然后让用户通过模式呈现的LoginViewController登录。