我的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)
}
}
答案 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,则应在重用图像时删除该图像。