如何判断选择了哪个tabBarItem

上个页面写了如何 创建 tabBar中间凸起按钮,现在有需求是:

  1. 当是任务管理Item,点击加号按钮时,弹出框是 任务创建页面。
  2. 当是OA办公Item时,点击加号按钮,弹出的是 创建工单管理

如何判断点击了哪个选项

class LJMainController: UITabBarController {

    /// 最近一次选择的Index
    var _lastSelectedIndex:Int = 0
}

使用 tabbar的代理“ tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem” 方法来获取到点击了哪个item。

extension LJMainController {
    override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
        // 获得选中的item
        let tabIndex = tabBar.items?.index(of: item)
        
        if tabIndex != _lastSelectedIndex {
            // 设置最近一次变更
            _lastSelectedIndex = tabIndex!
            
            /// OA 是 2
            /// 任务管理是1
            print("_lastSelectedIndex = \(_lastSelectedIndex)")
        }
    }
}

在这里,因为只有三个item,中间的还是凸起的添加按钮,在这个方法中,是获取不到添加按钮的index 的。可能是因为已经被覆盖了。所以可以安心的直接赋值给 变量 “ _lastSelectedIndex”

在 加号按钮的点击事件中写判断内容:

// MARK:- 中间按钮
extension LJMainController {
    // fileprivate 文件内私有属性和方法,仅在当前文件中可以访问,包括同一个文件中不同的类
    // private: 私有属性和方法,仅在当前类中可以访问,不包括分类。
    @objc fileprivate func composeStatus(){
        
        setTabBarVisible(visible: !tabBarIsVisible(), animated: true)
        
        if _lastSelectedIndex == 2 { // OA办公
            
            print("OA办公")
            
        }else if _lastSelectedIndex == 0 { // 任务管理
            
            print("任务管理")
            
        }
    }
}

你可能感兴趣的:(如何判断选择了哪个tabBarItem)