首页 > 解决方案 > 如何从不同的 swift 文件中更改 UILabel.text?

问题描述

当我尝试从 ViewController 以外的其他 swift 文件更改 UIlabel 时,出现 nil 值错误。

//ViewController.swift

import UIKit

class MainViewController: UIViewController {

  @IBOutlet weak var myLabel: UILabel?

  override func viewDidLoad() {
        super.viewDidLoad()

    myLabel?.text = "foo"
    }
  func label(stringVal: String? = nil){
      myLabel?.text = stringVal!
    }
}

//Source.swift

//Do working here and get a string value from struct
// I saved that string in stringValue

let VC = MainViewController()
VC.label(stringVal: stringValue!)

请让我知道我做错了什么。

标签: iosswift

解决方案


视图控制器控件不是在构造函数中创建的,它应该为空。您需要在运行label方法之前显示该视图控制器并避免错误。

一个有效的选项是在构造函数中设置一个内部变量viewDidLoad,当标签已经创建时,你可以这样做

myLabel.text = stringValue // stringValue is comes from constructor.

推荐阅读