查找选择了哪个选项卡栏项目

时间:2019-04-09 20:15:12

标签: swift uitabbarcontroller

我正在寻找一种方法来查找在我的标签栏控制器上选择了哪个标签栏项目。

我有5项,其中一项,如果用户未登录,我想显示一个“注册视图”。

我已经获得了所有验证,但是找不到一种很好的方法来检查用户是否点击了标签栏上的第四项。

有什么想法吗?谢谢

self.tabBarController?.delegate = UIApplication.shared.delegate as? UITabBarControllerDelegate

        func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
            if viewController is CalculatorViewController {
                print("Redirect to register view")
            }

            return true
        }

2 个答案:

答案 0 :(得分:0)

 func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
        guard let index = tabBarController.viewControllers?.firstIndex(where: {$0 === viewController}) else {
            return false
        }

        if index == 3 && !IS_LOGGED_IN{
            /*** show registration ***/
            return false //if you want to disable transition to the associated viewController against that tab
        }
        return true
 }

答案 1 :(得分:0)

您可以尝试使用此类工具(如果您确实在使用导航控制器)

override func viewDidLoad() {
    super.viewDidLoad()

    if let index = self.tabBarController?.selectedIndex, index == 3 {
         // do things here
    }

}

UPD。 甚至是这样

override func viewDidLoad() {
    super.viewDidLoad()

    if !userLogedIn {
         self.tabBarController?.selectedIndex = index // index is your tab bar item with login view
    }

}