У меня есть представление корзины, которое содержит список, а в списке есть представление оплаты. Моя проблема в том, что я не могу выбрать что-либо в представлении оплаты, если он является частью списка. Я не могу ввести имя или данные карты на экране ниже, они не могут быть выбраны
cartViewImage
Если я удалю список и заменю его на VStack, он работает хорошо, но это не выглядит хорошо, потому что нет настроек размера Dynami c, которые вы получаете со списком. ScrollView также приводит к невозможности выбора полей.
Может ли кто-нибудь объяснить мне, почему это происходит?
struct CartView: View {
@ObservedObject var cart = CartStore()
@State var newItemAddedToCart: Product?
var body: some View {
//VStack{
List{
ForEach(cart.itemsInShoppingCart, id: \.self) { cartItem in
VStack{
HStack{
URLImage(cartItem.productImageURLs[0]) { proxy in
proxy.image
.renderingMode(.original)
.resizable()
//.frame(width: 230, height: 300)
}
Text("\(cartItem.productName)")
Text("€" + String(format : "%0.2f", cartItem.productPrice))
Text("\(cartItem.customerQuantity)")
Spacer()
Button(action: {
self.removeItemFromCart(productToRemove: cartItem)
}){
Image(systemName: "trash")
}
}.frame(height: 120)
}
}
Divider()
PaymentView()
}.onAppear(perform: loadCart)
.environment(\.defaultMinListRowHeight, 120)
//}
}
struct PaymentView: View {
@ObservedObject var cart = CartStore()
var body: some View {
VStack{
StripeCheckoutView()
.frame(height: 190)
VStack{
Spacer()
HStack{
Text("Total")
Spacer()
Text("€" + String(format : "%0.2f", cart.calculateTotalCost()))
}
NavigationLink(destination: EmptyView()){
Text("Buy")
.frame(width: 200, height: 30, alignment: .trailing)
.font(.custom("SanFranciscoDisplay-Black", size: 20))
.foregroundColor(.primary)
.padding([.leading, .trailing], 10)
.padding([.top, .bottom], 5)
.background(Color("Primary Green"))
.cornerRadius(10)
.shadow(radius: 10)
}.padding(.top)
}
}
}
}