背景
我的代码在tableview
中显示食物项列表,在UITableViewCell
中有button
可根据需要将食物项目添加到购物车。
将特定项目添加到购物车后,应隐藏与该button
对应的添加cell
,并且不应隐藏所有未添加的内容。
问题:
问题是,当我向购物车添加一个名为index: 0
的商品时,它会成功添加并隐藏button
,但是当我点击第二个button
时在index : 1
,第二项也被添加到购物车但第一项按钮被取消隐藏,一次只有一个当前索引处的按钮被隐藏而不是所有添加到购物车的项目按钮。 / p>
func addToCart(_ button : UIButton) {
self.selectedIndex = button.tag
let foodItem : HCFoodItem = arrFoodItems?.object(at: self.selectedIndex) as! HCFoodItem
foodItem.isFoodAddedToCart = true
arrItemsAddedToCart?.add(foodItem)
let arrayCount = arrItemsAddedToCart?.count
let badgeCount : String = String(format: "%d", arrayCount!)
tabBarController?.tabBar.items?.last?.badgeValue = badgeCount
HCDataCache.sharedDataCacheInstance.cacheData(object: arrItemsAddedToCart, key: HC_CACHE_KEY_CART_ITEM)
self.foodItemsTableView?.reloadData()
}
// hide/unhide buttons here...
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cellId: NSString = "LazyLoadTableViewCell"
var foodItems : HCFoodItem?
foodItems = arrFoodItems?.object(at: indexPath.row) as! HCFoodItem?
let cell: HCFoodItemTableViewCell = tableView.dequeueReusableCell(withIdentifier: cellId as String)! as! HCFoodItemTableViewCell
cell.imgFood?.downloadImageFrom(link: foodItems?.strFoodImage as! String, contentMode: UIViewContentMode.scaleAspectFill)
cell.btnAddDelete?.tag = indexPath.row
cell.btnAddDelete?.addTarget(self, action: #selector(HCHomeViewController.addToCart(_:)), for: UIControlEvents.touchUpInside)
let itemsAddedToCart : NSMutableArray? = HCDataCache.sharedDataCacheInstance.fetchCachedDataForKey(key: HC_CACHE_KEY_CART_ITEM)
if (itemsAddedToCart?.count)! > 0 {
for cardFoodItem in itemsAddedToCart!{
let foodItem : HCFoodItem = cardFoodItem as! HCFoodItem
if foodItem.strFoodName == foodItems?.strFoodName {
cell.btnAddDelete?.isHidden = true
}else{
cell.btnAddDelete?.isHidden = false
}
}
} else {
cell.btnAddDelete?.isHidden = false
}
cell.selectionStyle = .none
return cell
}