TextField复制SwiftUI中相同的所有字段

TextField复制SwiftUI中相同的所有字段,swiftui,Swiftui,当我在其中一个文本字段中键入一些文本时,不知何故,它会同时向所有文本字段添加相同的文本。我试图将它们彼此分开,以便正确分配它们 struct CardInfo : View { @State var creditCard : CreditCard @State var isSaved: Bool = false @State private(set) var text = "" var body: some View { VSt

当我在其中一个文本字段中键入一些文本时,不知何故,它会同时向所有文本字段添加相同的文本。我试图将它们彼此分开,以便正确分配它们

struct CardInfo : View {
    @State var creditCard : CreditCard
    @State var isSaved: Bool = false
    @State private(set) var text = ""
    var body: some View {
        VStack {
            CustomTextField(data: $text, tFtext: "Kartin Uzerindeki Isim", tFImage: "user")
                .textContentType(.givenName)
                .onReceive(Just(text)) { data in
                    self.creditCard.cardOwnerName = self.text
            }
            CustomTextField(data: $text, tFtext: "Kredi Kart Numarasi", tFImage: "credit")
                .textContentType(.oneTimeCode)
                .keyboardType(.numberPad)
                .onReceive(Just(text)) { data in 
                    self.creditCard.cardNumber = self.text
            }

您需要为每个
文本字段使用单独的
@State
变量:

struct CardInfo : View {
    @State var creditCard : CreditCard
    @State var isSaved: Bool = false
    @State private(set) var cardOwnerName = ""
    @State private(set) var cardNumber = ""

    var body: some View {
        VStack {
            CustomTextField(data: $cardOwnerName, tFtext: "Kartin Uzerindeki Isim", tFImage: "user")
                .textContentType(.givenName)
                .onReceive(Just(cardOwnerName)) { data in
                    self.creditCard.cardOwnerName = data
            }
            CustomTextField(data: $cardNumber, tFtext: "Kredi Kart Numarasi", tFImage: "credit")
                .textContentType(.oneTimeCode)
                .keyboardType(.numberPad)
                .onReceive(Just(cardNumber)) { data in 
                    self.creditCard.cardNumber = data
            }
            ...
        }
    }
}

这是因为所有文本字段都使用相同的
@State
变量
text
。如果在一个文本字段中键入内容,它将更新变量,而该变量将更新其他文本字段,因为它们依赖于同一个变量。pawello2222的答案包含了解决方案。
struct CardInfo : View {
    @State var creditCard : CreditCard
    @State var isSaved: Bool = false
    @State private(set) var cardOwnerName = ""
    @State private(set) var cardNumber = ""

    var body: some View {
        VStack {
            CustomTextField(data: $cardOwnerName, tFtext: "Kartin Uzerindeki Isim", tFImage: "user")
                .textContentType(.givenName)
                .onReceive(Just(cardOwnerName)) { data in
                    self.creditCard.cardOwnerName = data
            }
            CustomTextField(data: $cardNumber, tFtext: "Kredi Kart Numarasi", tFImage: "credit")
                .textContentType(.oneTimeCode)
                .keyboardType(.numberPad)
                .onReceive(Just(cardNumber)) { data in 
                    self.creditCard.cardNumber = data
            }
            ...
        }
    }
}