You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TableViewController数据显示错误,添加指定代码后数字消失咨询

解决TableView添加注册cell和自动行高后数据消失的问题

看起来你遇到的问题是添加了self.tableView.register(ContactListTableViewCell.self, forCellReuseIdentifier: "ContactCell")和self.tableView.rowHeight = UITableViewAutomaticDimension之后,tableView里的内容消失了,我来帮你分析下可能的原因和解决办法:

1. 缺少预估行高设置

UITableViewAutomaticDimension需要配合estimatedRowHeight一起使用,否则tableView无法正确计算cell的高度,可能导致cell高度为0,内容自然看不到。你需要添加一行代码:

self.tableView.estimatedRowHeight = 80 // 这里设置一个符合你cell内容的预估高度,比如80或者其他数值

2. Cell注册方式错误

如果你的ContactListTableViewCell是通过xib文件或者Storyboard创建的,直接用register(ContactListTableViewCell.self, ...)注册的是纯代码实现的cell,这会导致tableView复用的cell不是你设计好的那个,自然没有内容。这种情况下你应该注册xib:

self.tableView.register(UINib(nibName: "ContactListTableViewCell", bundle: nil), forCellReuseIdentifier: "ContactCell")

如果是纯代码创建的cell,那要确保你在ContactListTableViewCell的初始化方法里正确添加了子控件,并且设置了完整的Auto Layout约束(比如label的上下左右都有约束,没有冲突),否则自动行高无法计算,内容也不会显示。

3. 检查cell的内容配置

确认你在tableView(_:cellForRowAt:)方法里正确地给cell的子控件赋值了,比如:

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    guard let cell = tableView.dequeueReusableCell(withIdentifier: "ContactCell", for: indexPath) as? ContactListTableViewCell else {
        return UITableViewCell()
    }
    // 示例:假设你的数据模型有name和phone属性
    let contact = yourDataArray[indexPath.row]
    cell.nameLabel.text = contact.name
    cell.phoneLabel.text = contact.phone
    return cell
}

4. 验证cell的约束

如果cell的子控件没有正确的约束(比如label只设置了leading和trailing,没有top和bottom约束),自动行高会计算失败,cell高度还是0。所以要确保cell的contentView里的所有子控件都有完整的约束链,从top到bottom都有约束,这样tableView才能根据内容动态计算高度。

按照上面的步骤排查,应该就能解决数据消失的问题啦!

内容的提问来源于stack exchange,提问作者RasiqKhan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:30:58