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)
如果 navigationController
或 tabbar
显示为 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
在我的项目中,我想在单击按钮时显示 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)
如果 navigationController
或 tabbar
显示为 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