如何制作当前月份和接下来几个月的数组。
问题描述:
我在一年中的所有月份制作一个pickerView,我想创建一个数组,当前月份在pickerView的开头,接下来的一个月等等。我已经在所有的月份中填充了pickerView和数组,并且我也获得了当前日期。如何制作当前月份和接下来几个月的数组。
let Months = ["January","Febrary","March","April","May","June","July","August","September","October","November","December"]
@IBOutlet var DateLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
DateTime()
}
func DateTime() {
let time = DateFormatter()
let date = DateFormatter()
time.timeStyle = .medium
date.dateStyle = .full
print(time.string(from: Date()))
print(date.string(from: Date()))
//RiderTimeStampRequested = time.string(from: Date())
DateLabel.text = date.string(from: Date())
}
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return Months.count
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return Months[row]
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
print(Months[row])
}
答
如果我理解正确,您希望获得当前月份之后所有月份的数组,包括当前月份。如果是月目前,您的数组将包含:
["July", "August", "September", "October", "November", "December"]
要做到这一点,我们可以使用dropFirst
方法来删除一个数组的第一个X元素。
可以声明一个新的属性是这样的:
var monthsInPickerView: [String]!
然后初始化它viewDidLoad
:
let calendar = Calendar.current
let month = calendar.dateComponents([.month], from: Date()).month!
monthsInPickerView = Array(Months.dropFirst(month - 1))
然后你会用monthsInPickerView
作为选择器视图的数据源。
仅供参考 - 不要硬编码自己的月份名称数组。从'DateFormatter monthSymbols'(或其变体之一)获取它们。 – rmaddy