Как установить изображение на текущий Cell (Kingfisher)?стриж - PullRequest
0 голосов
/ 19 декабря 2018

У меня есть TableView с пользовательскими ячейками.Метка smiles содержит ссылки.

Как поместить изображение из ссылки на текущую ячейку ImageView?Мой код

 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let identifier = "ClientCell"
        self.cell = self.tableView.dequeueReusableCell(withIdentifier: identifier) as? customChatCell

let text = message[Constants.MessageFields.text] ?? ""
let selectedCell = self.tableView.cellForRow(at: indexPath) as? customChatCell

***

if text.range(of:"smiles") != nil {
            let url = URL(string: text)
            self.cell![indexPath.row].smile.kf.setImage(with: url)
        } 

***
}

не работает.Я получаю сообщение об ошибке для строки self.cell![indexPath.row].smile.kf.setImage(with: url)

Тип 'customChatCell' не имеет подписчиков

Я использую Kingfisher.Если я использую код

self.cell.smile.kf.setImage(with: url)

, изображение вставляется во все ячейки, а не для текущего.

Пожалуйста, помогите мне исправить это.

1 Ответ

0 голосов
/ 19 декабря 2018

Вы должны удалить, сохраняя ссылку cell на уровне class.Ваш cellForRow должен выглядеть следующим образом:

 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
       let identifier = "ClientCell"
       let cell = tableView.dequeueReusableCell(withIdentifier: identifier) as? customChatCell

       let text = message[Constants.MessageFields.text] ?? ""
       if text.range(of:"smiles") != nil {
            let url = URL(string: text)
            cell.smile.kf.setImage(with: url)
       } else {
           // Reset image to nil here if it has no url
           cell.smile.image = nil  
       }
} 

Помните, что вы используете один UIView (то есть customChatCell) для каждой ячейки в UITableView, поэтому, когда вы удаляете ячейку из очереди, это вашаответственность за обновление / сброс элементов UI в соответствии с вашими данными для каждой ячейки.

...