Как обновить текстовые значения на основе нажатия кнопки в SwiftIOS

Программируем под IOS
Ответить
Anonymous
 Как обновить текстовые значения на основе нажатия кнопки в Swift

Сообщение Anonymous »


У меня есть приложение «Корзина покупок» в SwiftUI. В настоящее время, когда я нажимаю кнопку «Добавить в корзину», она может добавить запись о продукте в поле зрения. Но вот в чем проблема. Когда я дважды нажимаю кнопку, в этот раз снова появляется та же запись о продукте, чтобы быть более простым, имея дублирующуюся запись и проблему с секундами, я также ожидаю обновить количество продукта, но я не уверен, как сделать это Пожалуйста, предложите мне сделать это лучше.

Вот мой код для просмотра списка..

импортировать SwiftUI структура ProductListView: Просмотр { var body: some View { Навигационный стек { ВСтек { if viewModel.productLists.count > 0 && !viewModel.refreshing { List(viewModel.productList, id: \.self) {продукт в ProductListViewCell (productData: продукт) } .listStyle(.grouped) } } } .navigationTitle(Текст("Список продуктов")) } } } Вот код ячейки..

struct ProductListViewCell: Просмотр { пусть данные продукта: Продукт @EnvironmentObject var order: Порядок var body: some View { HStack { if let url = URL(строка: productData.thumbnail) { ProductAsyncImageView (url: URL) .frame(ширина: 150, высота: 150) .mask(RoundedRectangle(cornerRadius: 16)) } VStack(выравнивание: .leading,интервал: 5) { Text("Имя: " + (productData.title)) .frame(maxWidth: .infinity, выравнивание: .leading) .font(.headline) Text("Описание: " + (productData.description)) .frame(maxWidth: .infinity, выравнивание: .leading) .multilineTextAlignment(.leading) Text("Цена: £" + String(productData.price)) .frame(maxWidth: .infinity, выравнивание: .leading) .font(.subheadline) Кнопка { order.add(пункт: ProductData) } этикетка: { HStack { Изображение (имя системы: «cart.badge.plus») Текст("Добавить в корзину") .fontWeight(.полужирный) } .foregroundColor(.white) .frame(ширина: 150, высота: 40) } .background(Цвет(.systemBlue)) .cornerRadius(10) } } } } Вот мой класс заказа..

импортировать SwiftUI Порядок класса: ObservableObject { @Published var product = [Продукт]() func add(пункт: Продукт) { Product.append(пункт) } func удалить (элемент: Продукт) { если пусть index = product.firstIndex(of: item) { Product.remove(по адресу: индекс) } } } Вот код для просмотра заказа.

struct OrderView: Просмотр { @EnvironmentObject var order: Порядок var body: some View { Навигационный стек { Список { Раздел { ForEach(order.product) { элемент в HStack(интервал: 20) { if let url = URL(строка: item.thumbnail) { ProductAsyncImageView (url: URL) .frame(ширина: 90, высота: 90) .padding(.bottom, -10) .clipShape(Круг()) } VStack(выравнивание: .leading) { Text("Имя: \(item.title)") Text("Цена: £\(item.price)") Кнопка("Показать подробности") { }.foregroundColor(.gray) } HStack { Изображение (имя системы: «умножить») Текст 1") } } } } Раздел { NavigationLink("Разместить заказ") { } } } .navigationTitle("Заказ") } } } Вот скриншот для просмотра списка товаров..


Изображение


Вот скриншот с повторяющейся записью, когда я трижды нажимаю кнопку «Добавить», но мне нужна только одна запись с количеством 3.


Изображение

Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»