如何阻止UITableView重用图像单元格数据?

时间:2016-12-30 11:36:06

标签: ios swift uitableview

我的Tableview正在重复使用以前的单元格图像数据并显示以前单元格中的图像。我做了以下以防止它重复使用。我错过了什么?

@IBAction func cityBtn(_ sender: UIButton) {
    for i in stride(from: 0, to: assignCities.count, by: 1)
       { cityName.append(bigCities[i])
         cityImages.append(bigCityImages[i])
        }}

public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let myCell= tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! CityCell
    myCell.myLabel.text = cityName[indexPath.row]

   let cityImg = cityImages[indexPath.row]
    myCell.myImage.image = nil

    if (cityImg != "") 
    {
        myCell.myImage.image = UIImage(named:cityImg)
    }
    else 
    {
        myCell.myImage.image = nil
    }
    return myCell
}


import UIKit
class CityCell: UITableViewCell {
    @IBOutlet weak var myImage: UIImageView!
    @IBOutlet weak var myLabel: UILabel!

override func prepareForReuse() {
    super.prepareForReuse()
    myImage.image = nil
}

override func awakeFromNib() {
    super.awakeFromNib()
    // Initialization code
}

override func setSelected(_ selected: Bool, animated: Bool) {
    super.setSelected(selected, animated: animated)

    // Configure the view for the selected state
}
}

我做了以上但仍然没有得到结果

2 个答案:

答案 0 :(得分:7)

您可以实施func prepareForReuse()的{​​{1}}方法并在那里重置您的单元格属性。

  

在从UITableView方法dequeueReusableCell返回对象之前调用此方法(withIdentifier:)

UITableViewCell

这必须在自定义表格视图单元格类中实现。

答案 1 :(得分:0)

如果你的tableView中没有那么多单元格,也许你可以使用唯一的CellIdentifier,例如:indexPath.section_indexPath.row