Изображения, установленные в UITableView, становятся неуместными для другой строки при получении изображения с сервера и наборе

#ios

#iOS

Вопрос:

Мы используем haneke для кэша изображений, при настройке изображений для удобного просмотра он вызывает сервер, чтобы получить изображение и установить для просмотра изображения в строке. Но из-за задержки при вызове сервера для получения изображения 1 строка изображений назначается 2-й строке, как будто она неуместна, не могли бы вы предложить лучший способ обработки UITableViewCell в этом сценарии.

Фрагмент кода для подготовки ячейки:

 func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let contact = searchedResults[indexPath.row]
let cell = tableView.dequeueReusableCellWithIdentifier("ConversationContactCell", forIndexPath: indexPath) as! ConversationContactCell
cell.contactImage.image = nil
ImageCache.getInstance()?.getUserImage(contact.contactImageURI, gender: contact.contactGender, imageRetrievalHandler: { (image) in
    cell.contactImage.image = image
})
cell.contactName.text = contact.contactName
return cell
  

}

Комментарии:

1. можете ли вы показать проверенный код

2. пожалуйста, опубликуйте свой код для создания ячейки и саму ячейку.

3. Фрагмент кода для подготовки ячейки:

4. Любые предложения

Ответ №1:

Похоже, что ваши изображения используются повторно, когда ячейки удаляются из очереди, а затем обновляются, когда изображения ячейки загружаются из Интернета.

Вы должны очистить изображение в своем классе ConversationContactCell следующим образом:

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

Это приведет к очистке изображений при каждом повторном использовании ячейки. Дайте мне знать, если это поможет!