У меня есть навигационное представление в swiftUI, у которого есть Список, который должен отправить вас на другой экран, но я, когда я помещаю другое представление, получаю ошибку Type '_' has no member 'productID'
. Я не получаю ошибку, если я помещаю пустое представление (в тот момент, когда я объявляю переменную в другом представлении, я получаю ту же ошибку) и если я помещаю текст в место назначения.
struct RestaurantResult: Codable {
var productID: Int
var productName: String
var cost: Float
var description: String
var imageURL: URL
}
struct productsView: View {
@State private var products = [RestaurantResult]()
var body: some View {
NavigationView {
List(products, id: \.productID) { item in
NavigationLink(destination: orderPage(orderitem: item)) {
VStack(alignment: .leading) {
Text(item.productName)
.font(.headline)
Text(String("$\(item.cost)"))
.font(.subheadline)
}
}
}.onAppear(perform: loadData)
.navigationBarTitle(Text(restaurant.storeName), displayMode: .large)
}
}
}
Примечание: не уверен, что это важно, но это представление находится внутри листа
Редактировать: вот код в orderPage: (я прокомментировал почти все это для его отладки).
struct orderFormat: Codable {
var productName: String
var notes: String
var quantity: Int
var id = UUID()
}
struct orderPage: View {
let orderItem: RestaurantResult //gets data from productsView
@State private var newOrder: orderFormat
@State private var orderProductName: String
@State private var orderQuantity: String
@State private var orderNotes: String
var body: some View {
VStack {
imageView(image: "test0").edgesIgnoringSafeArea(.all)
VStack {
HStack {
Text(orderItem.productName)
.font(.subheadline)
Spacer()
Text(String("$\(orderItem.cost)"))
.font(.subheadline)
}.padding()
Stepper(value: $newOrder.quantity, in: 1...10) {
Text("Quantity: \(newOrder.quantity)")
}
TextField("Notes", text: $newOrder.notes)
.textFieldStyle(RoundedBorderTextFieldStyle())
.frame(width: 200, height: nil)
.multilineTextAlignment(.center)
.disableAutocorrection(Bool(true))
.accessibility(identifier: "Notes")
.autocapitalization(.none)
/*
Button(action: {
self.newOrder.productName = self.orderItem.productName
print(self.newOrder)
}) {
HStack{
Spacer()
Text("Order").font(.headline).foregroundColor(.white)
Spacer()
}.padding(.vertical, CGFloat(10))
.background(Color.blue)
.padding(.horizontal, CGFloat(40))
}
*/
}
} //first VStack
}
}