7

我有一个故事板,其中包含以下视图(场景):

  • 登录画面
  • TabBarController 有 4 个选项卡(库、工作流、设置和下载)

基于用户通过单击按钮(登录)登录,我以编程方式加载选项卡栏控制器,始终使用以下代码的第一个选项卡:

         LibraryWebViewContoller *lbc = [self.storyboard instantiateViewControllerWithIdentifier:@"docovaMainTabBarController"];
         [self presentViewController:lbc animated:YES completion:nil];

我想要做的是能够使用故事板中的 TabBarController 以编程方式打开不同的选项卡。到目前为止,我能够打开带有第一个选项卡的选项卡栏控制器,但没有打开其他选项卡的运气,因为它似乎总是在选择第一个选项卡的情况下加载 TabBarController。

4

4 回答 4

18

我能够通过使用以下代码解决该问题:

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)
于 2013-10-02T10:51:15.973 回答
1

假设您想选择第二个视图控制器。在标签栏控制器上设置 activeViewController 属性)

lbc.activeViewController = [lbv.viewControllers objectAtIndex:1];

(不确定 lbc 是标签栏控制器还是标签栏中的第一个视图控制器 - 假设是)

于 2013-10-01T23:35:47.297 回答
0

斯威夫特 5

let storyboard = UIStoryboard(name: "TabBarController", bundle: .main)
let tabbarController = storyboard.instantiateInitialViewController()
tabbarController?.modalPresentationStyle = .fullScreen
self.present(tabbarController!, animated: true, completion: nil)
于 2020-06-02T06:47:32.957 回答
0

斯威夫特4:

let tbc = storyboard.instantiateViewController(withIdentifier: "docovaMainTabBarController") as? UITabBarController tbc.selectedIndex = 1 present(tbc, animated: true) {() -> Void in }

于 2018-02-18T04:50:42.953 回答