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

点击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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 11:30:05