我是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,具体取决于传入单元格的数据。但是,图像要么根本不显示,要么没有显示细胞。
提前感谢我提出错误的建议。
答案 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
}