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
相关产品推荐
相关产品推荐

