在单元格中设置imageView

时间:2018-01-16 14:46:09

标签: swift uitableview uiimageview

我是Swift的新手,我看过很多关于这个主题的指南。但就我而言,它正在发挥作用。我有一个自定义单元格文件:

class FileCell: UITableViewCell {

@IBOutlet weak var firstName: UILabel!
@IBOutlet weak var cellImage: UIImageView!

func updateImage(name: String) {
    cellImage.image = UIImage(named: name)
}}

在视图控制器中,我使用“willDisplay”功能如下:

func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
    let cell = tableView.dequeueReusableCell(withIdentifier: "FileCell") as! FileCell
    let user = users[indexPath.row]
    if user.email.isEmpty {
        //cell.cellImage.image = UIImage(named: "folder.png")
        cell.updateImage(name: "folder.png")
    } else {
        //cell.cellImage.image = UIImage(named: "file.png")
        cell.updateImage(name: "file.png")
    }
}

我尝试在单元格中更改imageView,具体取决于传入单元格的数据。但是,图像要么根本不显示,要么没有显示细胞。

提前感谢我提出错误的建议。

1 个答案:

答案 0 :(得分:2)

您不应该将新单元格出列,因为您已有单元格。 跳过第一句话:

 // let cell = tableView.dequeueReusableCell(withIdentifier: "FileCell") as! FileCell

但有一个问题:为什么使用willDisplay委托方法?我建议在tableView(_:cellForRowAt:)中设置单元格:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) {
    let cell = tableView.dequeueReusableCell(withIdentifier: "FileCell") as! FileCell
    let user = users[indexPath.row]
    cell.firstName.text = user.name // or something
    if user.email.isEmpty {
        cell.updateImage(name: "folder.png")
    } else {
        cell.updateImage(name: "file.png")
    }
    return cell
}