首页 > 解决方案 > 如何在 SwiftUI 中给 DatePicker 一个分钟间隔

问题描述

有谁知道如何给分钟 DatePicker 一个间隔?我试图只显示 15 的倍数(0、15、30、45)。这是否只有通过与 UIKit 交互才能实现?

我相信它没有使用该in: ...Date()零件,至少我想不出解决方案。这是我的片段:

DatePicker(
                "",
                selection: $selectedDate,
                /*in: ...Date(),*/
                displayedComponents: .hourAndMinute
            )

非常感谢!

标签: swiftswiftui

解决方案


使用两个选择器,一个用于小时,一个用于分钟,然后转换为 Date() 怎么样?它并不漂亮,但这只是其中的一部分:

struct ContentView: View {
    @State private var hour = 1
    @State private var minute = 0

    let minutes = [0, 15, 30, 45]

    var body: some View {
        GeometryReader { geometry in
            HStack {
                Picker("Hour", selection: self.$hour) {
                    ForEach(1...12, id: \.self) {
                        Text("\($0)")
                    }
                }
                .labelIsHidden()
                .frame(maxWidth: geometry.size.width / 4)
                .clipped()

                Picker("Minutes", selection: self.$minute) {
                    ForEach(self.minutes, id: \.self) { minute in
                        Text(minute == 0 ? " : 0\(minute)" : " : \(minute)")
                    }
                }
                .labelIsHidden()
                .frame(maxWidth: geometry.size.width / 4)
                .clipped()

            }
        }
    }
}

推荐阅读