如何在 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中创建仅包含十六进制字符而不包含空格的文件的十六进制转储?

是否可以在 GKE 的区域集群中创建仅限区域的节点池?

我是不是可以在 AWS 中创建仅对 Cognito 用户可用但对任何其他 AWS 用户不可用的密钥?

如何在 SwiftUI 中以交互方式按年份过滤日期列表

如何创建年份选择器下拉菜单

无法在 SwiftUI 中创建简单的可选择标签视图