Swift 如何在按钮点击时显示 Tabbar

Swift How to present Tabbar on Button click

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

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

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

 navigationController?.pushViewController(tabbar, animated: true)

你们能告诉我我需要做什么以及哪些代码对我展示 Tabbar 控制器有用吗?

有关更多说明:我添加了下面的图像,其中有一个蓝色按钮 viewController 我想在单击该蓝色按钮时显示标签栏控制器

谢谢。

您应该知道 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,那是你的问题。

Select 触发按钮点击的 viewController 和 Select 编辑器表单 xcode 菜单->嵌入->NavigationController。

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

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

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

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

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

试试看:
使用 Storyboard Segue: 将您的 segue 与您的操作按钮模态连接。

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

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

这是结果:

根据您的图片,我认为您的 tabBarController 没有后退按钮。意味着用户不能返回。

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

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