我是 SwiftUI 的新手,在這種情況下,我可以添加多個人的資料,每次點擊按鈕時,它都會收集新人的資料。
場景是這樣
的:
我在一個文本欄位上添加資料,它會在每個文本欄位上更新,因為文本欄位只有一個狀態變數。我的問題是如何為文本欄位添加多個狀態變數,因為文本欄位沒有固定數字。我的代碼是:
import SwiftUI
struct TextFieldText: View {
@State private var name = ""
@State private var email = ""
@State var totalValue: Int = 1
var body: some View {
VStack(spacing: 30) {
ForEach((1...totalValue).reversed(), id: \.self) {_ in
VStack {
CustomTextfield(text: $name, placeHolder: "Enter name", title: "Enter Name")
CustomTextfield(text: $email, placeHolder: "Enter email", title: "Enter Email")
}
}
Button {
print("add person tapped")
totalValue = totalValue 1
} label: {
ZStack {
RoundedRectangle(cornerRadius: 60)
.frame(width: 180, height: 45)
.foregroundColor(Color(ColorName.appBlue.rawValue))
Text("Add another person")
.foregroundColor(.white)
.font(Font.custom(InterFont.bold.rawValue, size: 14))
}
}
Spacer()
}
}
}
struct TextFieldText_Previews: PreviewProvider {
static var previews: some View {
TextFieldText()
}
}
我想在每個文本欄位上添加不同的資料。如何在 SwiftUI 中實作它?
uj5u.com熱心網友回復:
您想處理多個人,但您只有一個 name和一個 email屬性。
你需要一個陣列。一種快速的方式是自定義結構
struct Person {
var name, email : String
}
在視圖中替換name并email用一個空陣列Person
@State private var people = [Person]()
在ForEach回圈中迭代索引并將text引數系結到給定索引處的人。
我沒有您的自定義文本欄位,代碼使用默認欄位
ForEach(people.indices, id: \.self) { index in
VStack {
TextField("Enter name", text: $people[index].name)
TextField("Enter email", text: $people[index].email)
}
.padding()
}
最后在按鈕動作中添加一個新Person的people
Button {
print("add person tapped")
people.append(Person(name: "", email: ""))
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/463810.html
