Я отобразил данные в UITableView
. Список предназначен для добавления товаров в корзину.
Согласно этой картинке можносм. следующие данные: -
- цена
- Наименование продукта
- Степпер для добавления количества
- Общая сумма
Итак, для этого сначала я добавил продукт в UITableView
.Затем шаговое действие для увеличения или уменьшения количества, я дал код в соответствии с.
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let identifier = "cell"
var cell: ChartCell! = tableView.dequeueReusableCell(withIdentifier: identifier) as? ChartCell
if cell == nil {
tableView.register(UINib(nibName: "ChartCell", bundle: nil), forCellReuseIdentifier: identifier)
cell = tableView.dequeueReusableCell(withIdentifier: identifier) as? ChartCell
}
cell.setEventData(carts: chartViewModel.datafordisplay(atindex: indexPath))
cell.cartadd = { [weak self] in
if let i = self?.tableView.indexPath(for: $0) {
let productid = self?.chartViewModel.datafordisplay(atindex: indexPath)
print(productid?.cartid)
self?.chartViewModel.search(idsearch:productid?.cartid)
print(self?.chartViewModel.searchindex(objectatindex: 0))
cell.setcartData(cartsadd: (self?.chartViewModel.searchindex(objectatindex:0))!)
print(cell.quantity)
self?.chartViewModel.totalPriceInCart()
let theIntegerValue1 :[Int] = (self?.chartViewModel.totalvalue)!
let result = "\(theIntegerValue1[0])"
print(result)
let theStringValue1 :String = String(describing: result)
print(theStringValue1)
self?.totalresult.text = theStringValue1
print(i)
}
}
viewmodel: -
class ChartViewModel: NSObject {
var datasourceModel:ChartDataSourceModel
var totalvalue:[Int] = []
var insertedArray:CartModel?
var filteredListArray:Array<CartModel>? = []
var productArray:CartModel?
var finalListArray:Array<CartModel>? = []
init(withdatasource newDatasourceModel: ChartDataSourceModel) {
datasourceModel = newDatasourceModel
print(datasourceModel.dataListArray)
}
func search(idsearch :String?) {
filteredListArray = datasourceModel.dataListArray?.filter{($0.cartid?.range(of: idsearch!, options: .caseInsensitive) != nil)}
print(filteredListArray)
}
func searchindex(objectatindex index: Int) -> CartModel {
return self.filteredListArray![index]
}
func datafordisplay(atindex indexPath: IndexPath) -> CartModel{
return datasourceModel.dataListArray![indexPath.row]
}
func numberOfRowsInSection(section:Int) -> Int {
return datasourceModel.dataListArray!.count
}
func delete(atIndex indexPath: IndexPath) {
datasourceModel.dataListArray!.remove(at: indexPath.row)
print(datasourceModel.dataListArray)
}
func totalPriceInCart() {
var totalPrice: Int = 0
for product in datasourceModel.dataListArray! {
totalPrice += product.cartsumint!
print(totalPrice)
}
self.totalvalue = [totalPrice]
}
func insert(atIndex indexPath: IndexPath) {
print(productArray)
print(datasourceModel.dataListArray)
datasourceModel.dataListArray!.insert(productArray!, at: indexPath.row)
print(datasourceModel.dataListArray)
self.datasourceModel.dataListArray = datasourceModel.dataListArray
print(datasourceModel.dataListArray)
self.finalListArray = self.datasourceModel.dataListArray
}
func add() {
datasourceModel.dataListArray?.append(insertedArray!)
print(datasourceModel.dataListArray)
print(insertedArray?.offerAddName)
print(insertedArray?.offerprice)
self.datasourceModel.dataListArray = datasourceModel.dataListArray
print(insertedArray?.cartsum)
}
}
Приведенный выше код для добавления количества.И этот код дан в UITableView
cellForRowAt
делегате.Но проблема в следующем: -
- При добавлении количества товара цена также изменяется и будет отображаться в UITableView
.Но при прокрутке UITableView
данные будут отображаться, как и раньше. Это означает: -
Исходное предположение: - название продукта: автомобиль, цена: 300, количество: 1
.UITableView
.Когда я добавил количество: 2, так что цена: 600 это покажет в UITableView
.Но проблема в том, что при прокрутке UITableView
она становится как цена: 300, количество: 1. Так как обновить UITableView
.что делать
UITableviewCell: -
func setEventData(carts:QM_CartModel)
{
self.name.text = carts.cartname
self.price.text = carts.carttotalprice
self.itemQuantityStepper.value = 1
setItemQuantity(quantity)
print(self.price.text)
let value = carts.cartsum
let x: Int? = Int(value!)
print(x)
let add = x!
print(add)
let theIntegerValue1 :Int = add
let theStringValue1 :String = String(theIntegerValue1)
// self.price.text = theStringValue1
self.price.text = "QR \(theStringValue1)"
print(self.price.text)
}
func setcartData(cartsadd:QM_CartModel)
{
let theIntegerValue :Int = self.quantity
let theStringValue :String = String(theIntegerValue)
cartsadd.cartquantity = theStringValue
print(cartsadd.cartquantity)
print(cartsadd.cartsum)
let value = cartsadd.cartsum
let qty = cartsadd.cartquantity
let x: Int? = Int(value!)
print(x)
let y: Int? = Int(qty!)
print(y)
let add = x! * y!
print(add)
let theIntegerValue1 :Int = add
let theStringValue1 :String = String(theIntegerValue1)
// self.price.text = theStringValue1
self.price.text = "QR \(theStringValue1)"
print(self.price.text)
cartsadd.cartsumint = theIntegerValue1
// print(cartsadd.cartsum)
}