繁体   English   中英

使用故事板中的选项卡控制器以编程方式打开视图

[英]Open a view programmatically with tab controller from storyboard

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

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

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

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

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

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

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)

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

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

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

斯威夫特4:

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

斯威夫特 5

let storyboard = UIStoryboard(name: "TabBarController", bundle: .main)
let tabbarController = storyboard.instantiateInitialViewController()
tabbarController?.modalPresentationStyle = .fullScreen
self.present(tabbarController!, animated: true, completion: nil)

暂无
暂无

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

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