首页 > 解决方案 > 另一个 ViewController 中的 UILabel.text 返回 nil

问题描述

我试图通过单击另一个 ViewController 中的按钮来更改一个 ViewController 中标签中的文本。

class Home: UIViewController {

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.
}
var add = AddNew()

@IBAction func buttonChangeText(_ sender: Any) {
    add.printText(text: "TEXT")
}

这是第一个视图控制器的代码

class AddNew: UIViewController {


@IBOutlet weak var labelTextText: UILabel!

override func viewDidLoad() {
    super.viewDidLoad()
    
}

func printText(text:String) {
     labelTextText?.text = text
 }

这是第二个vc的代码。如果我尝试更改它,它不会做任何事情。我也尝试打印它,它只是打印为零。如果我从同一个视图控制器打印或更改它,它确实有效。

任何想法将不胜感激。谢谢!

标签: iosswiftxcodeuibuttonuilabel

解决方案


我假设您正在使用 segue 在控制器之间切换,所以首先向 AddNew ViewController 添加一个文本属性,然后将您的 prepareForSegue 更改为

if segue.identifier == "yourSegueName" {
    let addNewVC = segue.destinationViewController as! AddNew
    AddNew?.text = "TEXT"
}

然后,当您加载 AddNew VC 时,将 labelTextText 更改为您之前定义的文本变量


推荐阅读