iOS开发 时间选择器BRPickerView自定义“全年”

BRPickerView参考链接:参考链接

使用自定义方式实现全年效果:

func yearMonthInfo() -> [BRResultModel]? {
        let yearSys = NSDate.init().br_year
        if yearSys < 2023 {
            toastMessage(msg: "系统时间错误")
            return nil
        }
        var yearArr: [Int] = []
        for year in 2023 ... yearSys {
            yearArr.append(year)
        }
        // 默认月份信息
        let monthArrDefault = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"]
        
        // 当前月份
        let monthMax = NSDate.init().br_month
        
        var listArr: [BRResultModel] = []
        var idx = 0
        for year in yearArr {
            let resModel = BRResultModel.init()
            resModel.parentKey = "-1"
            resModel.parentValue = ""
            resModel.value = "\(year)年"
            resModel.key = "\(year)"
            listArr.append(resModel)
            
            for month in monthArrDefault {
                
                if year == yearSys {
                    if (Int(month) ?? 1) <= monthMax {
                        let model = BRResultModel.init()
                        model.parentKey = "\(year)"
                        model.parentValue = "\(year)年"
                        model.key = month
                        if month.elementsEqual("0") == true {
                            model.value = "全年"
                        } else {
                            model.value = "\(month)月"
                        }
                        listArr.append(model)
                    }
                    if selIndexArr.count == 0 {
                        selIndexArr.append(.init(integerLiteral: idx))
                        selIndexArr.append(.init(integerLiteral: monthMax))
                    }
                    
                } else {
                    let model = BRResultModel.init()
                    model.parentKey = "\(year)"
                    model.parentValue = "\(year)年"
                    model.key = month
                    if month.elementsEqual("0") == true {
                        model.value = "全年"
                    } else {
                        model.value = "\(month)月"
                    }
                    listArr.append(model)
                }
            }
            idx += 1
        }
        return listArr
    }
weak var weakSelf = self
        let picker = BRStringPickerView.init(pickerMode: .componentLinkage)
        picker.title = "选择月份"
        picker.dataSourceArr = yearMonthInfo()
        picker.selectIndexs = selIndexArr
        BMLog.info(selIndexArr)
        picker.numberOfComponents = 2
        picker.resultModelArrayBlock = {
            resultModelArr in
            BMLog.info(resultModelArr)
            let yearModel = resultModelArr?.first
            let monthModel = resultModelArr?.last
            weakSelf?.selIndexArr.removeAll()
            weakSelf?.selIndexArr.append(.init(integerLiteral: yearModel?.index ?? 0))
            weakSelf?.selIndexArr.append(.init(integerLiteral: monthModel?.index ?? 0))
            
            var title = ""
            if monthModel?.index == 0 {
                // 全年
                BMLog.info(yearModel?.value)
                title = yearModel?.value ?? "2023年"
                let date = NSDate.br_date(from: title, dateFormat: "yyyy年")
                weakSelf?.selDateStr = NSDate.br_string(from: date!, dateFormat: "yyyy")
            } else {
                // 年-月
                BMLog.info("\(yearModel?.value ?? "2023年")\(monthModel?.value ?? "1月")")
                title = "\(yearModel?.value ?? "2023年")\(monthModel?.value ?? "1月")"
                let date = NSDate.br_date(from: title, dateFormat: "yyyy年MM月")
                weakSelf?.selDateStr = NSDate.br_string(from: date!, dateFormat: "yyyy-MM")
            }
            weakSelf?.monthBtn.setTitle(title, for: .normal)
            weakSelf?.tableView.mj_header?.beginRefreshing()
        }
        
        // 设置自定义样式
        let style = BRPickerStyle.init()
        style.pickerColor = .bm_hex(0xF3F6FB)
        style.pickerTextColor = colorBlack
        style.separatorColor = .clear
        style.pickerTextFont = UIFont.systemFont(ofSize: 16)
        style.pickerHeight = 38

        picker.pickerStyle = style
        picker.show()
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容