求助:UITableViewCell中UILabel不显示,模拟器构建无Xcode报错但UILabels不显示
解决UITableViewCell中UILabel不显示的问题
嘿,我之前碰到过好多次这种“明明没报错但控件就是不出来”的情况,别慌,咱们一步步排查:
先检查Cell的注册与复用
先确认你在viewDidLoad里是不是正确注册了Cell的类或者xib,比如:// 纯代码Cell的注册方式 tableView.register(YourCustomCell.self, forCellReuseIdentifier: "CustomCellID") // 用xib的注册方式 tableView.register(UINib(nibName: "YourCustomCell", bundle: nil), forCellReuseIdentifier: "CustomCellID")另外在
cellForRowAt方法里取Cell的时候,复用ID一定要和注册的完全一致,别手滑打错字!重点查Label的Auto Layout约束
这绝对是最常见的原因!如果Label的约束没给全,Auto Layout大概率会把它压缩成0宽0高,自然看不见:- 打开Cell的xib/Storyboard,检查Label的约束:必须有明确的
leading/trailing(或者固定宽度)、top/bottom(或者固定高度)约束,而且不能有约束冲突。 - 可以打开Xcode右上角的Debug View Hierarchy,直接查看视图层级,看看Label是不是真的存在,只是尺寸为0或者位置跑偏了。
- 打开Cell的xib/Storyboard,检查Label的约束:必须有明确的
检查Label本身的属性
- 有没有不小心把
isHidden设成true,或者alpha调为0了? - 文本颜色会不会和Cell背景色完全一样?比如背景是白色,Label文字也设成白色,那肯定看不见!
- 确认在
cellForRowAt里确实给Label的text属性赋值了,甚至可以打印一下这个值,看看是不是空字符串。
- 有没有不小心把
检查Cell的高度设置
- 如果用自动计算Cell高度,记得要同时设置这两行:
tableView.rowHeight = UITableView.automaticDimension tableView.estimatedRowHeight = 44 // 给一个合理的预估高度就行 - 如果是手动设置高度,确保高度足够容纳Label,别把Cell高度设得比Label还小。
- 如果用自动计算Cell高度,记得要同时设置这两行:
排查是否有视图遮挡
有没有在代码里给Cell添加了其他视图,刚好把Label盖住?或者在Cell的awakeFromNib、layoutSubviews方法里,不小心修改了Label的frame,把它移到看不见的地方了?
要是这些排查完还是没解决,把你的cellForRowAt代码和Cell的布局相关代码贴出来,我再帮你揪问题!
内容的提问来源于stack exchange,提问作者Lucas Nascimento
相关产品推荐
相关产品推荐

