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

Segue准备与执行传值异常:ViewController间变量传递问题

解决First_VC向Second_VC传值后标签不更新的问题

问题原因

你的代码中Second_VC的viewDidLoad方法先于First_VC的prepare方法完成对name的赋值执行,导致初始化时proName被设置为默认值"1";后续name被正确赋值,但没有触发UI更新,所以标签始终显示"1"。

解决方案

给Second_VC的name变量添加属性观察者,当name的值发生变化时自动更新标签文本:

class Second_VC: UIViewController {
    // 确保proName已正确关联Storyboard中的Label
    @IBOutlet weak var proName: UILabel!
    
    var name: String? {
        didSet {
            // UI操作必须在主线程执行,这里强制切换主线程避免异常
            DispatchQueue.main.async {
                self.proName.text = self.name ?? "1"
            }
        }
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // 初始化时先设置一次,覆盖name提前赋值的场景
        proName.text = name ?? "1"
        print(name ?? "1")
    }
}

额外排查点

  • 检查proName的IBOutlet连线是否正常(右键控件查看连线,无断点则说明连接有效)。
  • 核对prepare方法中的segue.identifier与Storyboard内设置的Segue标识完全一致,避免因标识不匹配导致赋值逻辑未执行。

内容的提问来源于stack exchange,提问作者Resurrect1on-

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 00:35:01