Как добавить объект на экран через кнопку add
Всем добрый вечер:
Вопрос в следующем, в моем проекте на SwiftUI возникла проблема, не понимаю как добавить объект через кнопку на экран с товарами.
Подробнее:
У меня уже есть листинг товаров:
При нажатии на любой из товаров, я открываю через .sheet информацию о товаре(условно), а далее есть две кнопки, закрыть и add,
закрыть работает, но мне нужно понять, как реализовать так, чтобы через кнопку add товар добавлялся на view с отображением товаров в стиле Row. Row товара я уже сверстал, есть логика CarManager:
import Foundation
class CartManager: ObservableObject {
@Published private(set) var products: [Product] = []
func addToCart(product: Product) {
products.append(product)
}
func removeFromCart(product: Product) {
products = products.filter { $0.id != product.id }
}
}
Вот сам код, который отвечает за .sheet при клике на товар из листинга:
struct ProductDetailSheet: View {
let product: Product
@Binding var isSheetPresented: Product?
@State private var amount = 1
var body: some View {
VStack{
VStack {
Image(product.image)
Spacer()
Text(product.name)
.presentationDetents([.height(200)])
.presentationBackgroundInteraction(.enabled(upThrough: .medium))
}
HStack{
Button("Close") {
isSheetPresented = nil
}
Spacer()
Button("Add") {
isSheetPresented = nil
}
Spacer()
Stepper("Enter an amount: \(amount)", value: $amount, in: 0...200)
}
}
.padding()
}
}
#Preview {
PackingList()
}
Вот кусок кода View с товаром в стиле Row
import SwiftUI
struct ProductRow: View {
var product: Product
var body: some View {
HStack(spacing: 20) {
Image(product.image)
.resizable()
.aspectRatio(contentMode: .fit)
.frame(width: 50)
.cornerRadius(10)
VStack(alignment: .leading, spacing: 10) {
Text(product.name)
.bold()
}
Spacer()
Image(systemName: "trash")
.foregroundColor(Color(hue: 1.0, saturation: 0.89, brightness: 0.835))
}
.padding(.horizontal)
.frame(maxWidth: .infinity, alignment: .leading)
}
}
#Preview {
ProductRow(product: productRaid[0])
}
И в этот экран мне надо передать товар по клику на кнопку .add из .sheet из view листинга
import SwiftUI
struct Recommended: View {
var body: some View {
Text("1")
.foregroundStyle(.white)
}
}
#Preview {
Recommended()
}
Как мне это реализовать? В какую сторону копать? Буду сильно благодарен всем, кто поделится информацией о том, как мне это реализовать.