在SwiftUI中创建表单UI
我正在尝试编写一个表单的基本UI,以捕获有关餐厅的详细信息。我将捕捉以下细节: “名称”,占位符:“填写餐厅名称”, “类型”,占位符:“填写餐厅类型”, “地址”,占位符:“填写餐厅地址”, “电话”,占位符:“填写餐厅电话”, “说明”,占位符:“填写餐厅说明” 我设计了基本的在SwiftUI中创建表单UI,swift,swiftui,swift5,Swift,Swiftui,Swift5,我正在尝试编写一个表单的基本UI,以捕获有关餐厅的详细信息。我将捕捉以下细节: “名称”,占位符:“填写餐厅名称”, “类型”,占位符:“填写餐厅类型”, “地址”,占位符:“填写餐厅地址”, “电话”,占位符:“填写餐厅电话”, “说明”,占位符:“填写餐厅说明” 我设计了基本的TextField模型,并对其进行了样式化,因为我必须在表单中的所有条目中重复使用此样式(如上所述),所以我决定将代码放入另一个SwiftUI文件中的Struct。到目前为止,一切都很好,因为数据位于不同的文件中,我对
TextField
模型,并对其进行了样式化,因为我必须在表单中的所有条目中重复使用此样式(如上所述),所以我决定将代码放入另一个SwiftUI文件中的Struct
。到目前为止,一切都很好,因为数据位于不同的文件中,我对在ContentView
中重新使用此Struct
数据感到惊讶。任何帮助或指导都会对我大有帮助
另外,也许这是一个愚蠢的问题,但是有没有办法不使用@State变量创建TextField
import Foundation
import SwiftUI
struct LabelTextField: View {
@State private var restaurant: String = ""
var label: String
var placeHolder: String
var body: some View {
VStack(alignment: .leading){
Text("NAME")
.font(.headline)
TextField("Enter Restaurant Name", text: $restaurant)
.padding(.all)
.background(Color(red: 239.0/255.0, green: 243.0/255.0, blue: 244.0/255.0, opacity: 1.0))
.cornerRadius (5.0)
} .padding(.horizontal, 15)
}
}
你就快到了。您只需要将所需的变量传递给LabelTextField。TextField需要一个绑定变量。我已更新了您的代码,使其按预期运行。希望这有帮助。快乐编码
struct ContentView: View {
@State private var restaurant: String = ""
var body: some View {
VStack {
LabelTextField(label: "NAME", placeHolder: "Fill in the restaurant name", restaurant: $restaurant)
Text("Restaurant name - \(restaurant)")
}
}
}
struct LabelTextField: View {
var label: String
var placeHolder: String
@Binding var restaurant: String
var body: some View {
VStack(alignment: .leading) {
Text(label)
.font(.headline)
TextField(placeHolder, text: $restaurant)
.padding(.all)
.background(Color(red: 239.0/255.0, green: 243.0/255.0, blue: 244.0/255.0, opacity: 1.0))
.cornerRadius (5.0)
}
.padding(.horizontal, 15)
}
}
你就快到了。您只需要将所需的变量传递给LabelTextField。TextField需要一个绑定变量。我已更新了您的代码,使其按预期运行。希望这有帮助。快乐编码
struct ContentView: View {
@State private var restaurant: String = ""
var body: some View {
VStack {
LabelTextField(label: "NAME", placeHolder: "Fill in the restaurant name", restaurant: $restaurant)
Text("Restaurant name - \(restaurant)")
}
}
}
struct LabelTextField: View {
var label: String
var placeHolder: String
@Binding var restaurant: String
var body: some View {
VStack(alignment: .leading) {
Text(label)
.font(.headline)
TextField(placeHolder, text: $restaurant)
.padding(.all)
.background(Color(red: 239.0/255.0, green: 243.0/255.0, blue: 244.0/255.0, opacity: 1.0))
.cornerRadius (5.0)
}
.padding(.horizontal, 15)
}
}
你查过我的密码了吗。我的意思是它需要一个状态变量作为绑定类型传递给它。我理解。我从贴出的问题中选取了这些行。更新了答案。谢谢。我检查了代码,它工作得很完美。你检查过我的代码了吗。我的意思是它需要一个状态变量作为绑定类型传递给它。我理解。我从贴出的问题中选取了这些行。更新了答案。谢谢。我检查了代码,它工作得完美无缺。