ada*_*ell 2 swift swift5 swiftui
我想知道是否可以将 Slider 和 TextField 绑定到同一个变量?原因是我希望用户能够通过滑动滑块或手动在文本字段中输入值来填充值。
执行任一操作也应该更新另一个方法,例如,如果用户将滑块滑动到值 100,则文本字段应实时更新以显示 100。
这是否可能,如果不可能,那么是否有任何类似的解决方案可以提供类似的结果?
是的,这是可能的。以下代码演示如何将值绑定到两个不同的控件。(为了使此代码可用,您需要对 TextField 进行一些验证以限制范围。)
import SwiftUI
class Model : ObservableObject {
@Published var value : Double = 50
}
struct ContentView: View {
@ObservedObject var model = Model()
var body: some View {
let formatter = NumberFormatter()
formatter.numberStyle = NumberFormatter.Style.decimal
formatter.roundingMode = NumberFormatter.RoundingMode.halfUp
formatter.maximumFractionDigits = 0
//formatter.minimumFractionDigits = 2
let spellOutFormatter = NumberFormatter()
spellOutFormatter.numberStyle = .spellOut
return Form() {
Text("Number as words: \(spellOutFormatter.string(from: NSNumber(value: model.value)) ?? "Not Known")")
TextField("Number", value: $model.value, formatter: formatter)
Slider(value: $model.value, in: 0...100, step: 1).padding()
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1270 次 |
| 最近记录: |