SwiftUI 中新文本字段的不同状态变量
Different State Variables for New Textfields in SwiftUI
我是 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 中实现它?
您想处理多个人,但您只有一个 name
和一个 email
属性.
你需要一个数组。 swifty 方式是自定义结构
struct Person {
var name, email : String
}
在视图中用 Person
的空数组替换 name
和 email
@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: ""))
我是 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 中实现它?
您想处理多个人,但您只有一个 name
和一个 email
属性.
你需要一个数组。 swifty 方式是自定义结构
struct Person {
var name, email : String
}
在视图中用 Person
name
和 email
@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: ""))