如何在其他视图中传递绑定对象?

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")
                }
        }
    }
}