隐藏特定tableview单元格上的按钮

时间:2017-02-06 08:53:00

标签: ios swift button tableview tableviewcell

背景

我的代码在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  
    }

0 个答案:

没有答案