设置连续轮选择器 - 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()
}
}
如何显示可以在所选范围内无限向上或向下滚动的选择器?就像您在 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()
}
}