设置连续轮选择器 - SwiftUI

Set continuous wheel picker - SwiftUI

如何显示可以在所选范围内无限向上或向下滚动的选择器?就像您在 ios 台设备中设置闹钟一样。现在,如果我的范围在 0 到 60 之间,我只能向上滚动直到达到 60,然后向下滚动以返回到 0。我希望它是连续的,当我达到 60 时我让循环重新开始。

您可以简单地添加一个较大的数量作为范围的上限,并将初始值设置为它的一半,并得到结果值截断提醒除以 60 value % 60。 要在选择器值更改时执行方法,您可以使用 [post][1]:

中显示的方法
import SwiftUI

struct ContentView: View {
    @State private var selection = 300
    var minutes: Int { selection % 60 }
    var body: some View {
        Picker(selection: $selection, label: Text("Minutes:")) {
            ForEach(0 ..< 600) {
                Text(String(format: "%02d", [=10=] % 60))
            }
        }.onChange(of: selection, perform: valueChanged)
    }
    func valueChanged(_ value: Int) {
        selection = 300 + value % 60
        print("Minutes: \(minutes)")
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}