检查用户是否在 UITabBarController 中选择了相同的选项卡

Check that user selected the same tab in UITabBarController

我有一个 UITabBarController 的子类。问题是:有没有办法检查用户是否选择了已经选择的 UITabBarItem?

我试过了 didSet 用于 selectedIndexselectedViewController 以及不同的委托方法:

func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool

func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController)

func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem)

但只有当它是不同的选项卡时它们才会被调用(并且 selectedIndex 根本不会被调用)

我需要它,例如,如果我想将当前打开的控制器滚动到顶部,如果它不是当前打开的控制器,那么我不想滚动它,我只想显示它 (以及其他一些与动画相关的内容)。

谢谢

编辑 我的代码还有另一个问题阻止了方法 override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) 从被调用。正如在一个明确的 "fresh" 项目中一样,它按预期工作。谢谢

这是一个可以帮助你的快速方法。

override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
    let currentIndex = tabBar.items?.firstIndex(of: item)
    if selectedIndex == 0 && currentIndex == 0 {
        // Do Something
    } else if selectedIndex == 1 && currentIndex == 1 {
        // Do Something
    }
}