标签栏项目作为按钮

时间:2019-07-18 21:26:15

标签: ios swift xcode

我的标签栏中有5个标签栏项目,其中有4个与导航控制器相连,这些向导导致了视图控制器。我想使中间的标签栏项目充当按钮,以便单击它时,我可以控制发生的情况。

当前,我的中间选项卡栏项目也连接到导航控制器,这是不对的,因为现在当我单击选项卡栏项目时,它会打开一个黑色的导航控制器。如何将中间的标签栏项目转换为按钮,而不是转到导航控制器?

如果我删除导航控制器,它也会从选项卡栏中删除选项卡项。

2 个答案:

答案 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)

要实现自定义标签栏并使用普通按钮之类的标签栏项

  1. 将新的标签栏视图添加到视图控制器(VC)
  2. 添加所需的自定义标签栏项目,并在其上分配标签号(在“属性”检查器上)
  3. 从“标签栏”视图添加代理出口到您的视图控制器(右键单击并拖动到VC)
  4. 在视图控制器上,像这样子类UITabBarDelegate
class ViewController: UIViewController, UITaBarDelegate {}
  1. 执行此委托函数,然后它应该可以工作
func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
    if item.tag == 1 {
        //Do something

    }
    if item.tag == 2 {
        //Do something
    }
    .......
}