gpt4 book ai didi

ios - 如何自定义UIDatePicker实现如下输出?

转载 作者:行者123 更新时间:2023-11-28 12:17:49 38 4
gpt4 key购买 nike

enter image description here

这是一个包含日、日期和月份作为输入的选择器,同样,在一个滚动中,有什么方法可以从 iOS 中的选择器/日期选择器实现这种功能?

最佳答案

对于这种情况,您应该将其添加为 UIPickerView 。假设问题是:如何按当月的天数填充它的值?为了更清楚,我将其作为步骤提及:

  • 您应该获得当前月份的开始结束 日期。您可以通过查看 this answer 找到实现方法。 .

  • 您需要获取开始日期和结束日期之间的所有日期 - 具有所需的格式。您可以通过查看 this answer 找到实现方法。 .

  • 获取当月所有天数后,即可轻松填充日期选择器数据源方法。

实现:

class ViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate {

var currentMonthDays: [String] {
var array = [String]()

var date = Date().startOfMonth() // first date
let endDate = Date().endOfMonth()

let fmt = DateFormatter()
//fmt.dateFormat = "dd/MM/yyyy"
fmt.dateFormat = "EEE dd MMM"

while date <= endDate {
date = Calendar.current.date(byAdding: .day, value: 1, to: date)!

array.append(fmt.string(from: date))
}

return array
}

override func viewDidLoad() {
super.viewDidLoad()

print(currentMonthDays)
}

// Picker View Data Soruce & delegate Methods

// REMARK: make sure to connect pickerview datasource/delegate to your view controller,
// I did it from the storyboard
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}

func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return currentMonthDays.count
}

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return currentMonthDays[row]
}
}


// Step #1:
extension Date {
func startOfMonth() -> Date {
return Calendar.current.date(from: Calendar.current.dateComponents([.year, .month], from: Calendar.current.startOfDay(for: self)))!
}

func endOfMonth() -> Date {
return Calendar.current.date(byAdding: DateComponents(month: 1, day: -1), to: self.startOfMonth())!
}
}

关于ios - 如何自定义UIDatePicker实现如下输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45855048/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com