UITutViewCell内的UIButton面向图像更改问题,同时tableview滚动

时间:2015-04-03 11:41:16

标签: uitableview swift ios8

我正在使用SWIFT“添加到收藏页面”。在我的产品列表中,有“Wish”按钮。该按钮是从Storyboard拖动的。如果用户单击该按钮,则该图像将更改为另一个新图像。我做到了这一部分,完全正常工作。但是,如果我们滚动tableview,则自动将另一个单元格按钮图像更改为新图像。我不知道怎么样,为什么?怎么解决这个?请指导我。

//MY CODING IS BELOW
unc tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell1 = product_tableview.dequeueReusableCellWithIdentifier("productmain", forIndexPath: indexPath) as product_tblCell
           image_url = arrayFromJson[indexPath.row].valueForKey("image_url") as NSString
           let imgurl = NSURL(string: image_url)!
           var imgdata : NSData = NSData(contentsOfURL: imgurl)!
           prod_img = UIImage(data: imgdata)!

           id = String(arrayFromJson[indexPath.row].valueForKey("id") as NSInteger)
           code = arrayFromJson[indexPath.row].valueForKey("code") as NSString
           descrip = arrayFromJson[indexPath.row].valueForKey("description") as NSString
           name = arrayFromJson[indexPath.row].valueForKey("name") as NSString
           price = String(arrayFromJson[indexPath.row].valueForKey("price") as NSInteger)

           cell1.name.text = name
           cell1.prod_desc.text = descrip
           cell1.prod_price.text = price
           cell1.prod_image.image = prod_img


           cell1.wish_image_but.addTarget(self, action : Selector("to_wish_list:"), forControlEvents: UIControlEvents.TouchUpInside)

           return cell1
}

func to_wish_list(sender : UIButton)
   {
           var img = UIImage(named: "wish_2.png")
           sender.setImage(img, forState: UIControlState.Normal)
           sender.enabled = false
   }

1 个答案:

答案 0 :(得分:0)

原因是当你滚动tableview并且你的单元格超出可见边界时,它用于显示另一个数据。当它回来时可见边界,它的数据再次被设置。

这意味着,您必须检查该单元格是否已标记为" to_wish_list"在设置单元格数据时。如果是,则默认设置UIImage(名称为" wish_2.png"),否则设置defult image。