【问题标题】:Swift How to present Tabbar on Button clickSwift如何在按钮单击时呈现Tabbar
【发布时间】:2018-05-27 09:16:14
【问题描述】:

在我的项目中,我想在按钮单击时显示 Tabbar,现在我已经创建了 tabbar,并且我将身份名称命名为“tabbar”,如下图所示

所以现在我使用下面的代码来调用标签栏控制器,但我没有得到它。

 let tabbar: UITabBarController? = (storyboard.instantiateViewController(withIdentifier: "tabbar") as? UITabBarController)

 navigationController?.pushViewController(tabbar, animated: true)

你们能否建议我需要做什么以及哪些代码对我展示 Tabbar 控制器有用。

更多规格:我添加了下面的图片,其中一个视图控制器中有一个蓝色按钮,我想在点击那个蓝色按钮时显示标签栏控制器

谢谢。

【问题讨论】:

  • 在导航控制器中嵌入标签栏
  • 我已经用它创建了标签,但现在我想在按钮单击时调用该标签栏控制器
  • 您的导航控制器或情节提要对象为 nil
  • @BhaumikJoshi 我不确定,但我不认为你可以在导航堆栈中推送标签栏,而不是在按钮单击时使其成为根控制器。
  • @TusharSharma 我没有更多的想法,你告诉我你能不能给我详细的想法。

标签: ios swift xcode uitabbarcontroller uistoryboardsegue


【解决方案1】:

试试这个看看:
使用 Storyboard Segue: 以模态方式将您的 segue 与您的操作按钮连接起来。

以编程方式:使用视图控制器 (UIViewController) 的 self 并以模态方式呈现它,就像这样。

if let tabbar = (storyboard.instantiateViewController(withIdentifier: "tabbar") as? UITabBarController) {
    self.present(tabbar, animated: true, completion: nil)
}

结果如下:

【讨论】:

    【解决方案2】:

    使用这个,你那里没有导航控制器,所以它不会那样推送,相反,你需要使用以下代码:

    self.present(tabbar, animated: true, completion: nil)
    

    【讨论】:

      【解决方案3】:

      您应该知道,Apple 的 HIG(人机界面指南)规定,如果您有一个选项卡式应用程序,它应该是整个应用程序的根级导航。从人机界面的角度来看,你不应该做你想做的事情。

      也就是说,技术上应该是可行的。

      我猜你没有导航控制器。

      使用调试器检查self.navigationController的值,或者添加打印语句:

       let tabbar: UITabBarController? = (storyboard.instantiateViewController(withIdentifier: "tabbar") as? UITabBarController)
       print("navigationController = \(navigationController)")
       print("tabbar = \(tabbar)")
      
       navigationController?.pushViewController(tabbar, animated: true)
      

      如果navigationController 或tabbar 显示为零,那就是你的问题。

      【讨论】:

      • 我的项目中有导航控制器
      • 那么,你的故事板可能无法访问 main.Storyboard
      • 不,不,一切正常,只是我不知道如何在按钮单击时显示该标签栏控制器。
      • 因此,将您的按钮链接到 IBAction(不是 segue),然后将您发布的代码放入 IBAction 调用的函数中。
      • 这里如果我不想pushViewcontroller,只想在tabbar可见的情况下切换控制器。我们怎样才能做到这一点?@DuncanC​​pan>
      【解决方案4】:

      选择触发按钮点击的viewController并选择编辑器表单xcode菜单->嵌入->导航控制器。

      然后在按钮操作中写下这个

         let tabbar: UITabBarController? = (self.storyboard?.instantiateViewController(withIdentifier: "tabbar") as? UITabBarController)
      
          self.navigationController?.pushViewController(tabbar!, animated: true)
      

      【讨论】:

      • 这里如果我不想pushViewcontroller,只想在tabbar可见的情况下切换控制器。我们怎样才能做到这一点??@Sh_Khan
      【解决方案5】:

      根据您的图片,我认为您的 tabBarController 没有后退按钮。表示用户无法返回。

      如果是这种情况,您可以这样做。

          let tabBar = self.storyboard?.instantiateViewController(withIdentifier: "tabBar")
         let appDelegate = UIApplication.shared.delegate as! AppDelegate
          appDelegate.window?.rootViewController = tabBar
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-13
        • 2020-12-29
        • 2018-03-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多