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

TableViewCell无法显示数据问题排查求助

解决TableViewCell完全不显示内容的问题

看起来你遇到的核心问题有几个,我帮你逐一排查并给出解决方案:

1. 最致命的错误:分区数量返回0

你的numberOfSections(in:)方法返回了0,这就意味着TableView没有任何分区——没有分区的话,不管你设置多少行,TableView都不会渲染任何单元格!

把这个方法的返回值改成1即可:

func numberOfSections(in tableView: UITableView) -> Int {
    // 返回1个分区(大多数场景下都只需要一个分区)
    return 1
}

2. 数据加载后没有刷新TableView

你在fetchJSON方法里成功解析完JSON数据后,没有通知TableView刷新数据。即使数据已经加载到courses数组里,TableView也不会自动更新显示。

修改解析成功后的代码,添加刷新方法:

do {
    let decoder = JSONDecoder()
    self.courses = try decoder.decode([Courses].self, from: data)
    print(self.courses)
    // 关键:获取数据后刷新表格
    self.arg.reloadData()
} catch let jsonErr {
    print("Failed to decode JSON", jsonErr)
}

3. 确认TableView的代理和数据源已正确关联

虽然你的ViewController已经遵守了UITableViewDelegate和UITableViewDataSource协议,但要确保TableView确实把这两个职责交给了它:

  • 要么在Storyboard中,右键点击TableView,把delegate和dataSource拖拽关联到ViewController上;
  • 要么在viewDidLoad里手动设置:
    override func viewDidLoad() {
        super.viewDidLoad()
        // 手动设置代理和数据源
        arg.delegate = self
        arg.dataSource = self
        fetchJSON()
        // ...其他原有代码
    }
    

4. 自定义Cell的潜在问题

你把cell强转为TableViewCell(自定义单元格类),这里需要注意:

  • 确认Storyboard中的Cell的Class属性已经设置为TableViewCell(在Identity Inspector里检查);
  • 如果你的自定义Cell里有自己添加的UILabel控件,那你应该设置自定义Label的文本,而不是系统默认的textLabel——比如如果你的Cell里有一个名为courseTitleLabel的Label,就应该写cell.courseTitleLabel?.text = "sdafasdfs",而不是用cell.textLabel?.text。

5. 背景色不生效的问题

你当前设置的selectedBackgroundView是单元格被选中时的背景色,如果要设置正常状态下的背景色,需要直接设置:

cell.backgroundColor = UIColor.black

按照上面的步骤修改后,你的TableView应该就能正常显示内容了!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:14:32