6 swiftui
我有一个像这样的文本字段包装:
public struct SUIDoubleField: View {
@Binding
private var value: Double
private let placeholder: String
private let formatter: NumberFormatter
private var focused: FocusState<Bool>.Binding
public init(value: Double, placeholder: String, formatter: NumberFormatter, focused: FocusState<Bool>.Binding, onChange: @escaping (Double) -> Void) {
_value = Binding(
get: { value },
set: { onChange($0) })
self.placeholder = placeholder
self.formatter = formatter
self.focused = focused
}
public var body: some View {
TextField(placeholder, value: $value, formatter: formatter)
.focused(focused)
.textFieldStyle(.roundedBorder)
.keyboardType(.decimalPad)
.toolbar {
ToolbarItemGroup(placement: .keyboard) {
Button(LOC(.dismissKeyboardButton)) {
focused = false // Error
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
在这里我无法更新该focus值。我收到这 2 个错误:
Cannot assign to property: 'self' is immutable
Cannot assign value of type 'Bool' to type 'FocusState<Bool>.Binding'
Run Code Online (Sandbox Code Playgroud)
我尝试传递onDone回调,并focused从该组件外部更新状态。这很好用,但我认为传入绑定更方便。我怎样才能做到这一点?
值应该分配给包装值而不是绑定本身,例如
Button(LOC(.dismissKeyboardButton)) {
focused.wrappedValue = false // << here !!
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2197 次 |
| 最近记录: |