如何在当前单元格(Kingfisher)上设置图像?迅速

时间:2018-12-19 08:22:41

标签: swift uitableview kingfisher

我有一个带有自定义单元格的TableView。标签smiles包含链接。

如何将Image从链接链接到当前ImageView'cell?我的代码

 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'没有下标成员

我正在使用翠鸟。如果我使用代码

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

将图像放入所有单元格,而不是当前图像。

请帮助我修复它。

1 个答案:

答案 0 :(得分:2)

您应该删除将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),因此,在使一个单元出队时,您有责任更新/重置{{1 }}元素,具体取决于每个单元格的数据。