如何在仅 select 年的 swiftUI 中创建一个 DatePicker,并且我希望它在预先指定的年份范围内?

How do I create a DatePicker in swiftUI that only select years and I want this to be in prespecified range of years?

我正在尝试构建一个应用程序,用户请求一个有很多代的项目,他必须输入他想要哪一年?

您可以创建自定义年份选择器,方法是使用一个简单的 Picker 并向其传递一个 Int 数组作为您的年份。

struct YearPicker: View {
    private let numberFormatter: NumberFormatter = {
        let nf = NumberFormatter()
        nf.usesGroupingSeparator = false
        return nf
    }()

    @State private var selectedYearIndex: Int
    private let years: [Int]

    init(start: Int, end: Int) {
        let years = Array(start...end)
        self._selectedYearIndex = State(initialValue: years.startIndex)
        self.years = years
    }

    func yearString(at index: Int) -> String {
        let selectedYear = years[index]
        return numberFormatter.string(for: selectedYear) ?? selectedYear.description
    }

    var body: some View {
        VStack {
            Text("Your birth year is \(yearString(at: selectedYearIndex))")
            Picker("Year", selection: $selectedYearIndex) {
                ForEach(years.indices) { yearIndex in
                    Text("\(self.yearString(at: yearIndex))")
                }
            }
        }
    }
}

struct YearPicker_Previews: PreviewProvider {
    static var previews: some View {
        YearPicker(start: 2000, end: 2020)
    }
}