可以在协议中动态更改 UILabel 值吗?

Can be change UILabel value dynamically in protocol?

我在 xib 显示自定义对话框后使用带有可选值的 UILabel 时遇到问题。数据通过协议后。 UILabel 无法更改值,因为它是我第一次在 swift.

中开发
label?.text = data

和'data'从传递协议值中获取。

但在 Android Java。如果我使用

label.setText(data)

值将在标签中更改。

也许吧,如果你能告诉我为什么没有成功呢?我很感激。谢谢你帮助我..

可能是 UI 更新的主线程问题。 试试看是否可行:

DispatchQueue.main.asnyc {
   label?.text = data
}

假设您需要将数据从 ViewController2 返回到 ViewController1

ViewController1.swift

protocol VC2Delegate {
    func getString(newString:String)
}

class ViewController1: UIViewController, VC2Delegate {
    @IBAction func btnJumpOnVC2(_ sender: Any) {
        guard let vc2 = self.storyboard?.instantiateViewController(withIdentifier: "ViewController2") as? ViewController2 else {return}
        vc2.modalPresentationStyle = .fullScreen
        vc2.dataDelgate = self
        self.present(vc2, animated: true, completion: nil)
    }    
 
    func getString(newString: String) {
        label?.text = newString
    }
}

ViewController2.swift

class ViewController2: UIViewController {
    var dataDelgate : VC2Delegate?

    @IBAction func btnBackToVC1(_ sender: Any) {
        dataDelgate?.getString(newstring:"Perfect")
        dismiss(animated: true, completion: nil)
    }    
}

结帐并找到您在代码中遗漏的内容。