我试图只在某些条件下才能在我的UITableView的某些单元格中显示图像。满足条件时,图像将按预期显示,但是当我向下滚动列表时,即使条件未满足,也会在单元格中向下看到图标。我认为这对于将单元格作为原型并在代码中重用而具有某些功能,但无法弄清楚如何修复。这是我的代码:
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("locCell", forIndexPath: indexPath)
var currentLoc = self.hereLocs[indexPath.row]
var hereImage = UIImage(named: "loc")
if currentLoc.currentlyHere! == true {
cell.textLabel?.text = currentLoc.name!
cell.detailTextLabel?.text = currentLoc.vicinity!
cell.imageView?.image = hereImage
} else {
cell.textLabel?.text = currentLoc.name!
cell.detailTextLabel?.text = currentLoc.vicinity!
}
return cell
}
答案 0 :(得分:6)
在else中添加:
cell.imageView?.image = nil
说明: UITableViews重用单元格。因此,您必须将属性设置为两种方案的帐户。
答案 1 :(得分:0)
每当你滚动tableview然后cellForRowAtIndexPath方法调用新的即将到来的单元格,并且在这个方法中你使用dequeueReusableCellWithIdentifier方法重用单元格然后你会得到一个旧单元格。如果您之前已设置过该图像,则此单元格可以显示该图像。因此,您必须删除此图像或根据您的要求设置新图像。从你的代码中你应该使用else块中的cell.imageView?.image = nil删除图像。