From 1639e83c543ea728592570bfa824702e0dca1d63 Mon Sep 17 00:00:00 2001 From: younger_times <841720330@qq.com> Date: 星期五, 28 七月 2023 14:20:18 +0800 Subject: [PATCH] fix --- WanPai/Root/Other/View/CommonDatePickerView.swift | 115 +++++++++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 86 insertions(+), 29 deletions(-) diff --git a/WanPai/Root/Other/View/CommonDatePickerView.swift b/WanPai/Root/Other/View/CommonDatePickerView.swift index fa9e9f2..7b1662e 100644 --- a/WanPai/Root/Other/View/CommonDatePickerView.swift +++ b/WanPai/Root/Other/View/CommonDatePickerView.swift @@ -11,7 +11,7 @@ class CommonDatePickerView: UIView,JQNibView{ enum DatePickerType{ - case YMD,YM + case YMD,YM,HHmm } @IBOutlet weak var view_container: UIView! @@ -21,8 +21,10 @@ private var years = [Int]() private var months = [1,2,3,4,5,6,7,8,9,10,11,12] + private var hours = [Int]() + private var minutes = [Int]() private var days = [Int]() - private var clouse:((Int,Int,Int?)->Void)? + private var clouse:((Int?,Int?,Int?,Int?,Int?)->Void)? override func awakeFromNib() { super.awakeFromNib() @@ -39,23 +41,36 @@ /// - before: 向上N年 /// - after: 向下N年 /// - type: 显示状态 - static func show(before:Int = 0,after:Int = 0,type:DatePickerType = .YM,clouse:@escaping (Int,Int,Int?)->Void){ + static func show(before:Int = 0,after:Int = 0,type:DatePickerType = .YM,clouse:@escaping (Int?,Int?,Int?,Int?,Int?)->Void){ let pickerView = CommonDatePickerView.jq_loadNibView() pickerView.type = type pickerView.clouse = clouse - if before > 0{ - for i in 0...before{ - pickerView.years.append(Date().jq_nowYear() - i) + + if type == .YM || type == .YMD{ + if before > 0{ + for i in 0...before{ + pickerView.years.append(Date().jq_nowYear() - i) + } + } + + if after > 0{ + for i in 0...after{ + pickerView.years.append(Date().jq_nowYear() + i) + } } } - if after > 0{ - for i in 0...after{ - pickerView.years.append(Date().jq_nowYear() + i) + if type == .HHmm{ + for i in 0...24{ + pickerView.hours.append(i) + } + + for i in 0...59{ + pickerView.minutes.append(i) } } -// pickerView.years = pickerView.years.sorted() + pickerView.frame = screnDelegate?.window?.frame ?? .zero screnDelegate?.window?.addSubview(pickerView) @@ -82,9 +97,11 @@ @IBAction func completeAction(_ sender: UIButton) { - var year:Int! - var month:Int! + var year:Int? + var month:Int? var day:Int? + var hour:Int? + var minute:Int? switch type{ case .YMD: @@ -94,6 +111,9 @@ case .YM: year = years[pickerView.selectedRow(inComponent: 0)] month = months[pickerView.selectedRow(inComponent: 1)] + case .HHmm: + hour = hours[pickerView.selectedRow(inComponent: 0)] + minute = minutes[pickerView.selectedRow(inComponent: 1)] case .none:break } @@ -103,7 +123,7 @@ self.layoutIfNeeded() } completion: { _ in self.removeFromSuperview() - self.clouse?(year,month,day) + self.clouse?(year,month,day,hour,minute) } } @@ -123,7 +143,6 @@ } if component == 1{ if type == .YMD{pickerView.reloadComponent(2)} - } } } @@ -131,24 +150,45 @@ extension CommonDatePickerView:UIPickerViewDataSource{ func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { - if component == 0{return years.count - }else if component == 1{ - if component == 1 && pickerView.selectedRow(inComponent: 0) == 0{ - return Date().jq_nowMonth() + if component == 0{ + switch type{ + case .YM,.YMD:return years.count + case .HHmm:return hours.count + case .none:return 0 } - return months.count - }else if component == 2{ - let year = years[pickerView.selectedRow(inComponent: 0)] - let month = months[pickerView.selectedRow(inComponent: 1)] - return Date.jq_getDays(year, month) } + + if component == 1{ + switch type{ + case .YM,.YMD: + if component == 1 && pickerView.selectedRow(inComponent: 0) == 0{ + return Date().jq_nowMonth() + } + return months.count + case .HHmm: + return minutes.count + case .none: + return 0 + } + } + + if component == 2{ + switch type{ + case .YMD: + let year = years[pickerView.selectedRow(inComponent: 0)] + let month = months[pickerView.selectedRow(inComponent: 1)] + return Date.jq_getDays(year, month) + default:return 0 + } + } + return 0 } func numberOfComponents(in pickerView: UIPickerView) -> Int { switch type{ - case .YM:return 2 + case .YM,.HHmm:return 2 case .YMD:return 3 case .none:return 0 } @@ -160,11 +200,28 @@ func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { if component == 0{ - return "\(years[row])年" - }else if component == 1{ - return "\(months[row])月" - }else{ - return "\(row + 1)日" + switch type{ + case .YM,.YMD:return "\(years[row])年" + case .HHmm:return String(format: "%02ld时", hours[row]) + default:return nil + } } + + if component == 1{ + switch type{ + case .YM,.YMD:return "\(months[row])月" + case .HHmm:return String(format: "%02ld分", minutes[row]) + default:return nil + } + } + + if component == 2{ + switch type{ + case .YMD:return "\(row + 1)日" + default:return nil + } + } + + return nil } } -- Gitblit v1.7.1