快速中的标签栏项目标签问题



我有一个视图控制器,其中标签栏内有标签栏,我有四个标签栏项目。我已经为每个项目设置了标签。我想在用户单击任何选项卡栏项时打开视图控制器。我使用了选项卡栏的委托方法来实现这一目标。现在,当我单击任何项目时,它仅在每个选项卡栏项目上打开第一个视图控制器。我的代码是这样的,

 func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
    if stateBtn.tag == 1 {
        let vcName = "StatesViewController"
        let viewController = storyboard!.instantiateViewController(withIdentifier: vcName)
        self.revealViewController().pushFrontViewController(viewController, animated: true)
    } else if bidBtn.tag == 2 {
        let vcName = "FindBidsViewController"
        let viewController = storyboard!.instantiateViewController(withIdentifier: vcName)
        self.revealViewController().pushFrontViewController(viewController, animated: true)
    }else if categoryBtn.tag == 3{
        let vcName = "CategoriesViewController"
        let viewController = storyboard!.instantiateViewController(withIdentifier: vcName)
        self.revealViewController().pushFrontViewController(viewController, animated: true)
    }else{
        let vcName = "RFPSearchViewController"
        let viewController = storyboard!.instantiateViewController(withIdentifier: vcName)
        self.revealViewController().pushFrontViewController(viewController, animated: true)
    }
}

我也将其委托设置为自我。但它只为所有项目打开一个视图控制器。

您正在检查

if stateBtn.tag == 1

这始终为真,因此第一个条件将始终执行。相反,您应该使用

if item.tag == 1 

因为 Item 是对单击的选项卡栏项目的引用。

Try this code to detect which item is clicked.
switch item.tag {
     case 0:
        print("First Item")
     case 1:
        print("Second Item")
     case 2:
        print("Third Item")
     case 3:
        print("Fourth Item")
     default: break
}
Hope this would help you.

最新更新