swift tableviewcell按钮图像问题

时间:2015-07-10 08:27:21

标签: ios swift uitableview

我的tableviewcell中有一个按钮,当符合某个条件时,我想更改按钮图像。我的桌面视图有无尽的滚动。

例如,我在第一页上有10个单元格。第一个单元符合标准并且按钮图标更改正确显示。但是当我滚动11.单元格图标也被更改,但不符合标准。当我向下滚动时,我观察到21号,31号......细胞图标也发生了变化。

func setupX(){

  let authorID = self.yazar?["author_id"].int!
  let fetchRequest = NSFetchRequest(entityName: "FavAuthors")
  let sortDescriptor = NSSortDescriptor(key: "authorID", ascending: true)
  fetchRequest.sortDescriptors = [sortDescriptor]
  let predicate = NSPredicate(format: "authorID == %ld", authorID!)
  fetchRequest.predicate = predicate
  let fetchResults = self.context!.executeFetchRequest(fetchRequest, error:  nil) as? [FavAuthors]
  if fetchResults!.count == 0 {
  }else{
     self.followButton.setImage(UIImage(named: "UnFollow Button.pdf"), forState: UIControlState.Normal)
  }
} 

2 个答案:

答案 0 :(得分:1)

这是因为细胞与旧状态一起重复使用。如果图像不符合标准,则应明确设置图像。

例如,更改:

if fetchResults!.count == 0 {
  } else {
     self.followButton.setImage(UIImage(named: "UnFollow Button.pdf"), forState: UIControlState.Normal)
  }

要:

if fetchResults!.count == 0 {
     self.followButton.setImage(UIImage(named: "Follow Button.pdf"), forState: UIControlState.Normal)
  } else {
     self.followButton.setImage(UIImage(named: "UnFollow Button.pdf"), forState: UIControlState.Normal)
  }

答案 1 :(得分:0)

当您向下滚动视图时,您正在重复使用单元格,因此将重用第一个单元格中设置的图像。如果在if语句中将图像设置为nil,则应在重用图像时删除该图像。