Swift如何在Button按钮上显示Tabbar

时间:2017-12-13 13:04:53

标签: ios swift xcode uitabbarcontroller uistoryboardsegue

在我的项目中,我想在按钮点击时显示Tabbar,现在我已经创建了tabbar,我将身份名称作为“tabbar”,我在下面的图像中显示

enter image description here

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

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

 navigationController?.pushViewController(tabbar, animated: true)

你们可以告诉我我需要做什么以及哪些代码对我提供Tabbar控制器很有用。

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

enter image description here

谢谢。

5 个答案:

答案 0 :(得分:2)

试试看,看看:
使用Storyboard Segue:使用操作按钮以模态方式将segue连接。

enter image description here

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

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

结果如下:

enter image description here

答案 1 :(得分:1)

使用这个,你没有那里的导航控制器,这就是为什么它不会推动那样,相反,你需要使用以下代码:

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

答案 2 :(得分:0)

你应该知道Apple的HIG(人机接口指南)说如果你有一个标签式应用程序应该是整个应用程序的根级导航。你不应该从人机界面的角度做你想做的事。

那说,技术上应该是可能的。

我的猜测是你没有导航控制器。

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

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

 navigationController?.pushViewController(tabbar, animated: true)

如果navigationControllertabbar显示为nil,那就是您的问题。

答案 3 :(得分:0)

选择触发按钮单击的viewController,然后选择编辑器表格xcode menu-> Embed In-> NavigationController。

然后在按钮操作中写下

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

    self.navigationController?.pushViewController(tabbar!, animated: true)

答案 4 :(得分:0)

根据你的图片,我认为你的tabBarController没有后退按钮。意味着用户无法回头。

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

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