我正在尝试更新一个带有测试值的按钮,我注意到每按一次更新按钮标题文本会显示测试值几分之一秒,然后重置为Button的默认值。
这似乎是一个错误,但我想看看是否有更简单的解释。 我已经尝试在按下按钮前等待10秒钟,但这似乎一直在发生。
如何使UIButton按预期运行?
import UIKit
class ViewController: UIViewController {
var testEntry = "its working"
@IBOutlet weak var testButton: UIButton!
@IBOutlet weak var testLabel: UILabel!
@IBAction func runTest(sender:
UIButton) {
// The button value should equal the value of the label value, but every 2nd button press of the test button results in the title of the button value resetting to the default value
dispatch_async(dispatch_get_main_queue()) {
self.testLabel.text = "\(self.testEntry)"
self.testButton.titleLabel?.text = "\(self.testEntry)"
}
}
Here是github项目。
答案 0 :(得分:9)
您不应该直接设置按钮标题标签的文本,只应将字体直接设置在标签上。应通过调用
来设置文本func setTitle(_ title: String?, forState state: UIControlState)
文本切换是因为您正在选择和取消选择按钮,该按钮正在某些具有不同标题的状态之间切换。
答案 1 :(得分:0)
您应该使用以下方法设置按钮标题文本...
self.testButton.setTitle(self.testEntry, forState: .Normal)
而不是titleLabel
属性。
答案 2 :(得分:0)
Swift 5
self.testButton.setTitle("hello", for: .normal)