我的标签栏中有5个标签栏项目,其中有4个与导航控制器相连,这些向导导致了视图控制器。我想使中间的标签栏项目充当按钮,以便单击它时,我可以控制发生的情况。
当前,我的中间选项卡栏项目也连接到导航控制器,这是不对的,因为现在当我单击选项卡栏项目时,它会打开一个黑色的导航控制器。如何将中间的标签栏项目转换为按钮,而不是转到导航控制器?
如果我删除导航控制器,它也会从选项卡栏中删除选项卡项。
答案 0 :(得分:2)
如果希望标签栏项充当按钮,则可以将UITabBarController
子类化并实现此委托函数:
func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
// Check if bar item selected is center
if viewController.tabBarItem.tag == 2 {
// Do Something Here ...
// Present View Controller
guard let navigationController = storyboard?.instantiateViewController(withIdentifier: "NavigationController") as? UINavigationController else { return false }
present(navigationController, animated: true)
// Returning false will not open the connected tab bar item view controller you attached to it
return false
}
// Return true to open the connected tab bar item view controller you attached to it (e.x. everything but the center item)
return true
}
答案 1 :(得分:1)
要实现自定义标签栏并使用普通按钮之类的标签栏项
class ViewController: UIViewController, UITaBarDelegate {}
func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) { if item.tag == 1 { //Do something } if item.tag == 2 { //Do something } ....... }