簡體   English   中英

捆綁<String?>在 SwiftUI 視圖文本字段上

[英]Binding<String?> on the SwiftUI View TextField

我有以下視圖模型:

struct RegistrationViewModel {

    var firstname: String?
}

我想在 TextField 中綁定 firstname 屬性,如下所示:

 TextField("First name", text: $registrationVM.firstname)
                      .textFieldStyle(RoundedBorderTextFieldStyle())

我不斷收到不允許綁定的錯誤。

要綁定對象,您的變量需要符合新包裝器@State@Binding@ObservableObject等之一。

因為您的RegistrationViewModel不符合View唯一的方法是讓您的RegistrationViewModel符合ObservableObject

class RegistrationViewModel: ObservableObject {

    @Published var firstname: String?
}

完成后,您可以將其稱為View使用

@ObservedObject var resgistrationVM: RegistrationViewModel = RegistrationViewModel()

或作為@EnvironmentObject

https://developer.apple.com/tutorials/swiftui/handling-user-input

此外,SwiftUI 不能很好地處理可選項,但extension可以很容易地處理它。

SwiftUI 可選文本字段

extension Optional where Wrapped == String {
    var _bound: String? {
        get {
            return self
        }
        set {
            self = newValue
        }
    }
    public var bound: String {
        get {
            return _bound ?? ""
        }
        set {
            _bound = newValue.isEmpty ? nil : newValue
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM