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

Swift中SettingsViewController的UITableView单元格无法加载问题

问题原因

你当前代码的核心问题是将tableView声明为了计算属性,每次访问该属性时都会生成一个全新的UITableView实例:

  • viewDidLoad中调用view.addSubview(tableView)时添加的是第一个实例
  • 后续设置delegate、dataSource时访问的是第二个全新实例,该实例从未被添加到视图层级中
  • viewDidLayoutSubviews中设置frame时访问的是第三个实例,和之前添加到视图上的实例完全无关联
    这就导致你实际加到视图上的tableView没有绑定数据源和代理,也没有设置正确的尺寸,所以单元格无法正常渲染。
修复方案

将tableView从计算属性修改为延迟存储属性,保证整个控制器生命周期内只会创建一个tableView实例,所有操作都作用在同一个实例上:

// 把原来的tableView计算属性替换为下面的代码
private lazy var tableView: UITableView = {
    let tableView = UITableView(frame: .zero, style: .grouped)
    tableView.register(UITableViewCell.self, forCellReuseIdentifier: "cell")
    return tableView
}()

修改完成后重新运行项目,就能正常显示「Log Out」按钮对应的单元格,点击后也能正常触发登出逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 21:15:03