我有一个故事板,其中包含以下视图(场景):
根据用户登录点击按钮(登录),我以编程方式加载标签栏控制器,始终使用以下代码的第一个标签:
LibraryWebViewContoller *lbc = [self.storyboard instantiateViewControllerWithIdentifier:@"docovaMainTabBarController"];
[self presentViewController:lbc animated:YES completion:nil];
我想要做的是能够使用故事板中的TabBarController以编程方式打开不同的选项卡。到目前为止,我能够使用第一个选项卡打开标签栏控制器但是没有运气打开其他标签,因为它似乎总是加载TabBarController并选择了第一个标签。
答案 0 :(得分:14)
我能够通过使用以下代码来解决问题:
UITabBarController *tbc = [self.storyboard instantiateViewControllerWithIdentifier:@"docovaMainTabBarController"];
tbc.selectedIndex=1;
[self presentViewController:tbc animated:YES completion:nil];
另外,请记住编辑故事板并将UITabBarController的故事板ID设置为docovaMainTabBarController,以便在故事板中进行唯一标识。
let tbc = self.storyboard.instantiateViewController(withIdentifier:"docovaMainTabBarController") as! UITabBarController
tbc.selectedIndex = 1
self.present(tbc, animated: true, completion:nil)
答案 1 :(得分:1)
假设您想要选择第二个视图控制器。在选项卡栏控制器上设置activeViewController属性
lbc.activeViewController = [lbv.viewControllers objectAtIndex:1];
(不确定lbc是标签栏控制器还是标签栏中的第一个视图控制器 - 假设它是)
答案 2 :(得分:0)
Swift4:
let tbc = storyboard.instantiateViewController(withIdentifier: "docovaMainTabBarController") as? UITabBarController
tbc.selectedIndex = 1
present(tbc, animated: true) {() -> Void in }
答案 3 :(得分:0)
雨燕5
let storyboard = UIStoryboard(name: "TabBarController", bundle: .main)
let tabbarController = storyboard.instantiateInitialViewController()
tabbarController?.modalPresentationStyle = .fullScreen
self.present(tabbarController!, animated: true, completion: nil)