点击cell跳转新ViewController后代码创建的UILabel不显示如何解决
问题解决方案
核心错误原因
- 控件添加顺序错误:你先将初始创建的空
firstAndLastNameLabel实例添加到了父视图,之后调用set()方法时重新生成了新的UILabel实例,该新实例没有被添加到视图上,因此无法显示 - 方法调用错误:
viewDidLoad中调用了不存在的setFirstAndLastNameLabel()方法,已经定义好的configureFirstAndLastNameLabel()配置方法没有被调用,配置规则不生效 - 固定frame的写法适配性差,不同尺寸设备上容易出现位置偏移
修复后可运行代码
class DetailViewController: UIViewController { var data: DataModel! var firstAndLastNameLabel: UILabel! let contentView = UIView() let scrollView = UIScrollView() override func viewDidLoad() { super.viewDidLoad() print("DETAIL VIEW CONTROLLER: \(String(describing: data))") view.backgroundColor = .white // 调整执行顺序:先初始化、配置控件,再添加到父视图 set() configureFirstAndLastNameLabel() self.view.addSubview(firstAndLastNameLabel) } func set() { firstAndLastNameLabel = UILabel(frame: CGRect(x: 10, y: 50, width: view.bounds.width - 20, height: 35)) // 横向居中适配不同屏幕宽度 firstAndLastNameLabel.center = CGPoint(x: view.bounds.midX, y: 260) firstAndLastNameLabel.text = "\(data.firstName) \(data.lastName)" } func configureFirstAndLastNameLabel() { firstAndLastNameLabel.numberOfLines = 0 // 补充基础配置避免文字看不见 firstAndLastNameLabel.textColor = .black firstAndLastNameLabel.font = .systemFont(ofSize: 17) } }
额外调试建议
如果修改后还是无法显示,可以给label临时设置背景色firstAndLastNameLabel.backgroundColor = .lightGray,快速确认控件是否成功渲染。
内容的提问来源于stack exchange,提问作者beginner992
相关产品推荐
相关产品推荐

