【问题标题】:Open a view programmatically with tab controller from storyboard使用情节提要中的选项卡控制器以编程方式打开视图
【发布时间】:2013-10-08 07:02:14
【问题描述】:

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

  • 登录屏幕
  • 具有 4 个选项卡(库、工作流、设置和下载)的 TabBarController

基于用户通过单击按钮(登录)登录,我以编程方式加载标签栏控制器,始终使用以下代码:

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

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

【问题讨论】:

    标签: ios


    【解决方案1】:

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

    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)
    

    【讨论】:

    • 也许值得一提的是,第一个选项卡的索引为 0。但对于程序员来说,这很简单。
    • 这个对我不起作用我必须在 tabViewController 上附加一个导航控制器,然后像上面那样实例化,但调用 navigationController 而不是标签栏
    【解决方案2】:

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

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

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

    【讨论】:

    • 谢谢凯文。你让我指出了正确的方向。这是我用来实现的代码: UITabBarController *tbc = [self.storyboard instantiateViewControllerWithIdentifier:@"docovaMainTabBarController"]; tbc.selectedIndex=1; [self presentViewController:tbc 动画:YES 完成:nil];
    【解决方案3】:

    Swift4:

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

    【讨论】:

      【解决方案4】:

      斯威夫特 5

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-02-21
        • 2016-07-21
        • 2015-07-05
        • 1970-01-01
        • 2012-06-08
        • 2012-11-25
        • 1970-01-01
        相关资源
        最近更新 更多