Swift中UITableViewCell内UIImageView设置异常求助
问题分析与解决方案
嘿,我一眼就看到你代码里的核心问题啦,咱们一步步来解决:
1. 最关键的错误:在willDisplay中错误地重新获取单元格
你在willDisplay方法里写了这行代码:
let cell = tableView.dequeueReusableCell(withIdentifier: "FileCell") as! FileCell
但willDisplay方法的参数里已经给你传了当前即将要显示的单元格(也就是那个cell参数),你重新dequeue的是一个全新的、不在当前屏幕上的单元格——相当于你把图片设置给了一个“隐形”的cell,而真正要显示的那个cell根本没被配置,这就是图片不显示的主要原因!
修正后的willDisplay代码
把重新dequeue的代码删掉,直接用方法参数里的cell:
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) { guard let fileCell = cell as? FileCell else { return } let user = users[indexPath.row] if user.email.isEmpty { fileCell.updateImage(name: "folder.png") } else { fileCell.updateImage(name: "file.png") } }
2. 其他需要排查的潜在问题
如果修正后还是没显示图片,你可以检查这几点:
- 确认
folder.png和file.png确实已经添加到你的Xcode项目中,并且文件名完全匹配(iOS是区分大小写的,比如Folder.png和folder.png会被当成不同的文件) - 检查Storyboard或XIB中,你的单元格的
Identifier是否设置为"FileCell",和代码里的复用标识一致 - 如果你是纯代码创建的tableView,要确保在视图控制器的
viewDidLoad里注册了cell:tableView.register(FileCell.self, forCellReuseIdentifier: "FileCell") - 确认你的
users数组里的数据是正确的,比如email字段的判断逻辑没问题
这样调整后,应该就能正常显示图片啦!
内容的提问来源于stack exchange,提问作者misi06
相关产品推荐
相关产品推荐

