2016-12-30 2 views
0

My Tableview повторно использует предыдущие данные изображения ячейки и отображает изображения из предыдущих ячеек. Я сделал следующее, чтобы предотвратить повторное использование. Что мне не хватает?Как остановить UITableView от повторного использования данных ячейки изображения?

@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 
} 
} 

я сделал выше, но все равно это не получение результата

+0

это нормально поведение, вы повторно клетку, поэтому он сохраняет его состояние, вы нужно сбросить его –

+0

Могу ли я узнать, как сбросить его, поскольку все мои попытки идут напрасно. – leaner122

+0

Ваш код выглядит отлично. Вы можете печатать содержимое своего массива? Покажите свой метод numberOfRows и как вы создаете свой массив. – Saad

ответ

5

Вы можете реализовать func prepareForReuse() метод UITableViewCell и сбросить свойства ячейки там.

Этот метод вызывается непосредственно перед тем, возвращается объект из метода UITableView dequeueReusableCell (withIdentifier :)

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

Это должен был быть реализован в классе вид ячейки пользовательских таблиц.

+0

Не возражаете ли вы направить меня к примеру его использования, поскольку я нахожу только одну строку ответов об этой функции. – leaner122

+0

положил метод в класс 'CityCell' – Tj3n

+0

Я сделал, как указано выше, но все тот же результат. – leaner122

0

Если ARA не так много клеток в вашем Tableview, может быть, вы можете использовать уникальный CellIdentifier, такие как: indexPath.section_indexPath.row

Смежные вопросы