Xcode9中Swift4编写的UITableView自定义Cell不显示数据问题
排查UITableView无数据显示的问题
嘿,我来帮你解决这个UITableView不显示数据的问题!咱们一步步来排查常见的原因:
确保数据源和代理已正确设置
你需要让ViewController遵守UITableViewDataSource和UITableViewDelegate协议,并且在viewDidLoad里手动绑定,或者在Storyboard里把tableView的dataSource和delegate拖到ViewController上:override func viewDidLoad() { super.viewDidLoad() tableView.dataSource = self tableView.delegate = self }检查数据源方法的实现
这是最容易出错的地方,你必须实现两个核心方法:- 返回行数的方法,要确保返回你设置的5:
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return 5 } - 配置cell的方法,这里要注意:
- 复用cell时的标识符必须和Storyboard里cell的
Identifier完全一致 - 一定要给cell里的控件(比如
labelValorTotal、labelQtdItens)赋值,不然即使cell创建了,也看不到内容
示例代码:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "TableViewCellVenda", for: indexPath) as! TableViewCellVenda // 给控件赋值,比如测试用的固定值 cell.labelValorTotal.text = "50.00" cell.labelQtdItens.text = "3" cell.imageCloud.image = UIImage(systemName: "cloud") return cell } - 复用cell时的标识符必须和Storyboard里cell的
- 返回行数的方法,要确保返回你设置的5:
验证cell的复用标识符匹配
打开Storyboard,选中你的TableViewCell,在Attributes Inspector里找到Identifier字段,确保它和你代码里dequeueReusableCell用的字符串完全一样,大小写都不能错!检查tableView的约束是否正确
如果tableView的约束没设置好(比如高度为0,或者被其他视图挡住),即使有数据也看不到。你可以给tableView设置上下左右都和父视图边缘对齐的约束,确保它能正常显示在屏幕上。确认cell的IBOutlet连线无误
你的TableViewCellVenda里有多个IBOutlet,要检查这些连线有没有断开(Storyboard里有没有红叉),如果连线失效,赋值也不会显示到界面上。
如果以上几点都检查过还是有问题,可以把ViewController里的相关代码贴出来,我再帮你进一步分析!
内容的提问来源于stack exchange,提问作者Augusto
相关产品推荐
相关产品推荐

