gpt4 book ai didi

ios - RxSwift - 当 UITextField 以编程方式更新时,UILabel 字段未更新

转载 作者:搜寻专家 更新时间:2023-10-30 21:49:13 24 4
gpt4 key购买 nike

我刚刚开始学习 RxSwift 并且有一个简单的例子,我不确定它为什么不工作。我有一个文本字段和一个标签字段。每当文本字段发生变化时,我都希望更新标签字段。如果我在文本字段中键入,一切都会按预期进行。如果我以编程方式设置文本字段,例如当我按下按钮并显式设置文本字段时,标签字段不会更新。

import UIKit
import RxSwift
import RxCocoa

class ViewController: UIViewController {
@IBOutlet weak var myTextField: UITextField!
@IBOutlet weak var myLabel: UILabel!

override func viewDidLoad() {
super.viewDidLoad()
myTextField.rx_text.bindTo(myLabel.rx_text)
}

@IBAction func pBtn(sender: UIButton) {
myTextField.text = "45"
}
}

如何更新标签字段?我看过很多示例,但似乎找不到可以回答这个问题的示例。

最佳答案

将您的代码更改为:

@IBAction func pBtn(sender: UIButton) {
myTextField.text = "45"
myTextField.sendActionsForControlEvents(.ValueChanged)
}

由于文本是一个属性,因此没有一种机制可以知道它何时以编程方式更改。相反,RxCocoa 使用控制事件来了解值何时更改。看看 UIControl+RxSwift.swift,你会发现类似这样的东西:

let controlTarget = ControlTarget(control: control, controlEvents: [.EditingChanged, .ValueChanged]) {
control in
observer.on(.Next(getter()))
}

关于ios - RxSwift - 当 UITextField 以编程方式更新时,UILabel 字段未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33815399/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com