可以在协议中动态更改 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)
}
}
结帐并找到您在代码中遗漏的内容。
我在 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)
}
}
结帐并找到您在代码中遗漏的内容。