【发布时间】:2019-12-11 13:28:43
【问题描述】:
我创建了一个用于设置时间(分钟和秒)的视图。它使用两个绑定到两个状态变量的选轮器。
现在我想在应用程序的不同位置使用该视图,但我不喜欢当时有两个单独变量的界面。相反,我希望只有一个绑定变量以秒为单位保存时间(因此 time = 185 将转换为 3 分 5 秒)。
绑定之间可以有某种“适配器”吗?
这是视图:
import SwiftUI
struct TimePicker: View {
var minutes: Binding<Int>
var seconds: Binding<Int>
var body: some View {
HStack() {
Spacer()
Picker(selection: minutes, label: EmptyView()) {
ForEach((0...9), id: \.self) { ix in
Text("\(ix)").tag(ix)
}
}.pickerStyle(WheelPickerStyle()).frame(width: 50).clipped()
Text("Min.")
Picker(selection: seconds, label: EmptyView()) {
ForEach((0...59), id: \.self) { ix in
Text("\(ix)").tag(ix)
}
}.pickerStyle(WheelPickerStyle()).frame(width: 50).clipped()
Text("Sec.")
Spacer()
}
}
}
【问题讨论】:
-
是的,
Binding(get: @escaping () -> Value, set: @escaping (Value) -> Void) -
@Asperi 这是一个有趣的提示,但我正在努力在我的示例中实现它。
-
@G.Marc 这可能有助于理解:gist.github.com/AliSoftware/ecb5dfeaa7884fc0ce96178dfdd326f8