美文网首页
如何判断选择了哪个tabBarItem

如何判断选择了哪个tabBarItem

作者: 文瑶906 | 来源:发表于2017-06-15 15:17 被阅读0次

    上个页面写了如何 创建 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

          本文链接:https://www.haomeiwen.com/subject/jaxuqxtx.html