Изображение плохо отображается при добавлении более 2-х одинаковых ячеек - PullRequest
0 голосов
/ 01 ноября 2018

С моей системой я строю свою ячейку программно и устанавливаю то, что мне нужно в ячейке, по сравнению с моим массивом (источником данных моего tableView).

Проблема появляется, когда я добавляю 3 ячейки или больше в tableView. Текст хороший, но изображение не отображается в правильной ячейке. Я думаю, что это проблема кеша системы TableView (повторное использование). Я следую нескольким постам на этом форуме, чтобы исправить это, но ничего не получается.

Это мой код в cellForRowAt:

let waitingCell = tableView.dequeueReusableCell(withIdentifier:"waiting", for: indexPath) as! CardCellWaiting
var cellToReturn : UITableViewCell!
let currentSurvey = user.lobbySurvey[indexPath.row]
let state : UserSurvey.state = currentSurvey.stateSurvey
switch state{
case .surveyWaiting:
    cellToReturn = waitingCell
    waitingCell.drawCard() // draw the card programmatically if needed
    waitingCell.clearImage() // look below to see the function
    waitingCell.setId(id: currentSurvey.id)
    waitingCell.setImage(image : currentSurvey.picture)
    waitingCell.setTimeLeft(timeLeft: currentSurvey.timeLeft)
    waitingCell.delegate = self
    waitingCell.delegateCard = self
}
return cellToReturn

так я обновляю свои исходные данные (obbySurvey) массив, который содержит классы опроса пользователей. С тех пор я строю свои клетки.

user.lobbySurvey.remove(at: 0)
self.tableView.deleteRows(at: [IndexPath(row: 0, section: 0)], with: .fade)
let surveyWaiting = UserSurvey(stateOfSurvey: .surveyWaiting)
surveyWaiting.picture = image
if let url = json["imageUrl"].string {
    surveyWaiting.pictureUrl = url
}
if let timeLeft = json["timeLeft"].string {
    surveyWaiting.timeLeft = timeLeft
}
if let surveySelfId = json["surveySelfId"].string {
    surveyWaiting.id = Int(surveySelfId)
}
let rowToInsert = self.getRowToInsert(typeOfState: .surveyWaiting)
user.counterSurvey += 1
user.lobbySurvey.insert(surveyWaiting, at: rowToInsert)
self.tableView.insertRows(at: [IndexPath(row: rowToInsert, section: 0)], with: .fade)

это clearImage функция:

func clearImage(){
    surveyWaiting.imageEmptyView.image = #imageLiteral(resourceName: "backgroundEmptyImage")
}

и моя setImage функция:

func setImage(image : UIImage){
    surveyWaiting.imageEmptyView.image = image.resized(targetSize: CGSize(width:100,height:125))
}

Я пытаюсь очистить свое изображениеПосмотрите как:

surveyWaiting.imageEmptyView.image = nil

Но не работай. Я также попытался использовать рамки, такие как Nuke с URL-адресом изображения, но ничего.

Может кто-нибудь иметь представление о том, почему мой код не упорядочивает изображение в хорошей ячейке? Спасибо за ваш ответ.

1 Ответ

0 голосов
/ 01 ноября 2018

Хорошо, моя ошибка ... Я использую этот framework для рисования асинхронного размытия в моем imageView, но этот плагин хранит кэш изображения, у которого есть размытие. Поэтому я просто удаляю кэш размытия и это решит проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...