如何在其他视图中传递绑定对象?
How to pass binding objects in other views?
我正在尝试将 textField 值从一个视图传递到另一个视图,从 AdressView 传递到 ShoppingView
struct AdressView: View {
@State var city = ""
@State var adress = ""
@State var houseNumber = ""
@State var flatNumber = ""
var body: some View {
NavigationLink(destination: ShoppingView(city: $city, adress: $adress, houseNumber: $houseNumber, flatNumber: $flatNumber)) {
Button {
} label: {
Text("Save")
.padding()
.foregroundColor(Color.blue)
}
}
struct ShoppingView: View {
@Binding var city: String
@Binding var adress: String
@Binding var houseNumber: String
@Binding var flatNumber: String
HStack {
Text("City:")
Spacer()
Text(city)
}
}
The problem is that ShoppingView is one of the tab items and I can't understand how I should pass binding objects of ShoppingView in MainView. I declared
@State var city = ""
@State var adress = ""
@State var houseNumber = ""
@State var flatNumber = ""
ShoppingView(city: $city, adress: $adress, houseNumber: $houseNumber, flatNumber: $flatNumber)
.tabItem {
Text("Cart")
Image(systemImage: "cart")
}
但这并没有在 ShoppingView 中显示我在 AdressView 中输入的任何 textField 值。
我想您想要这样的东西:您应该在主视图中定义您的@State 变量,然后将它们传递给 AdressView 和 ShoppingView。
struct AdressView: View {
@Binding var city: String
@Binding var adress: String
@Binding var houseNumber: String
@Binding var flatNumber: String
var body: some View {
NavigationView {
Form {
TextField("City", text: $city)
TextField("Adress", text: $adress)
TextField("House Number", text: $houseNumber)
TextField("Flat Number", text: $flatNumber)
NavigationLink(destination: ShoppingView(city: $city, adress: $adress, houseNumber: $houseNumber, flatNumber: $flatNumber)) {
Button {
} label: {
Text("Save")
.padding()
.foregroundColor(Color.blue)
}
}
}
}
}
}
struct ShoppingView: View {
@Binding var city: String
@Binding var adress: String
@Binding var houseNumber: String
@Binding var flatNumber: String
var body: some View {
VStack {
Text("Adress:")
Text(city)
Text(adress)
Text(houseNumber)
Text(flatNumber)
}
}
}
struct MainView: View {
@State var city = ""
@State var adress = ""
@State var houseNumber = ""
@State var flatNumber = ""
var body: some View {
TabView {
AdressView(city: $city, adress: $adress, houseNumber: $houseNumber, flatNumber: $flatNumber)
.tabItem {
Text("Adress")
Image(systemName: "pin.fill")
}
ShoppingView(city: $city, adress: $adress, houseNumber: $houseNumber, flatNumber: $flatNumber)
.tabItem {
Text("Cart")
Image(systemName: "cart")
}
}
}
}
我正在尝试将 textField 值从一个视图传递到另一个视图,从 AdressView 传递到 ShoppingView
struct AdressView: View {
@State var city = ""
@State var adress = ""
@State var houseNumber = ""
@State var flatNumber = ""
var body: some View {
NavigationLink(destination: ShoppingView(city: $city, adress: $adress, houseNumber: $houseNumber, flatNumber: $flatNumber)) {
Button {
} label: {
Text("Save")
.padding()
.foregroundColor(Color.blue)
}
}
struct ShoppingView: View {
@Binding var city: String
@Binding var adress: String
@Binding var houseNumber: String
@Binding var flatNumber: String
HStack {
Text("City:")
Spacer()
Text(city)
}
}
The problem is that ShoppingView is one of the tab items and I can't understand how I should pass binding objects of ShoppingView in MainView. I declared
@State var city = ""
@State var adress = ""
@State var houseNumber = ""
@State var flatNumber = ""
ShoppingView(city: $city, adress: $adress, houseNumber: $houseNumber, flatNumber: $flatNumber)
.tabItem {
Text("Cart")
Image(systemImage: "cart")
}
但这并没有在 ShoppingView 中显示我在 AdressView 中输入的任何 textField 值。
我想您想要这样的东西:您应该在主视图中定义您的@State 变量,然后将它们传递给 AdressView 和 ShoppingView。
struct AdressView: View {
@Binding var city: String
@Binding var adress: String
@Binding var houseNumber: String
@Binding var flatNumber: String
var body: some View {
NavigationView {
Form {
TextField("City", text: $city)
TextField("Adress", text: $adress)
TextField("House Number", text: $houseNumber)
TextField("Flat Number", text: $flatNumber)
NavigationLink(destination: ShoppingView(city: $city, adress: $adress, houseNumber: $houseNumber, flatNumber: $flatNumber)) {
Button {
} label: {
Text("Save")
.padding()
.foregroundColor(Color.blue)
}
}
}
}
}
}
struct ShoppingView: View {
@Binding var city: String
@Binding var adress: String
@Binding var houseNumber: String
@Binding var flatNumber: String
var body: some View {
VStack {
Text("Adress:")
Text(city)
Text(adress)
Text(houseNumber)
Text(flatNumber)
}
}
}
struct MainView: View {
@State var city = ""
@State var adress = ""
@State var houseNumber = ""
@State var flatNumber = ""
var body: some View {
TabView {
AdressView(city: $city, adress: $adress, houseNumber: $houseNumber, flatNumber: $flatNumber)
.tabItem {
Text("Adress")
Image(systemName: "pin.fill")
}
ShoppingView(city: $city, adress: $adress, houseNumber: $houseNumber, flatNumber: $flatNumber)
.tabItem {
Text("Cart")
Image(systemName: "cart")
}
}
}
}