如何在 swiftUI 中创建仅选择年份的 DatePicker,并且我希望它在预先指定的年份范围内?
Posted
技术标签:
【中文标题】如何在 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? 【发布时间】:2020-12-26 21:48:36 【问题描述】:我正在尝试构建一个应用程序,用户请求一个具有无数代的项目,他必须输入他想要哪一年?。
日期选择器包含在表单中,因此当它被点击时,它不会像许多选择器一样导航到仅选择器屏幕,而是在列表中创建日期选择器视图有没有办法导航到它或至少将其调整为更小的尺寸【问题讨论】:
【参考方案1】:您可以通过使用简单的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)
【讨论】:
非常感谢您的帮助我只是想知道日期选择器是否有一个修饰符来节省麻烦。 @Z.Elshazly 遗憾的是没有。内置的DatePicker
只能显示日期(以日/月/年格式)、时间(以小时/分钟/秒格式)或两者都显示。它不能显示单个日期组件。如果你想实现这一点,你需要构建一个自定义 UI 元素。
感谢您的帮助,我实际使用您的代码只是做了一些调整:P。
@Z.Elshazly 很高兴我能帮上忙。如果您觉得我的回答有用,请考虑接受。如果您不确定如何操作,可以阅读What should I do when someone answers my question?。以上是关于如何在 swiftUI 中创建仅选择年份的 DatePicker,并且我希望它在预先指定的年份范围内?的主要内容,如果未能解决你的问题,请参考以下文章
如何在bash中创建仅包含十六进制字符而不包含空格的文件的十六进制转储?