gpt4 book ai didi

ios - UIButton#titleLabel 在以编程方式更改后恢复

转载 作者:可可西里 更新时间:2023-11-01 04:21:58 28 4
gpt4 key购买 nike

我有一个连接到 UIButton@IBOutlet。在我的代码中,我有以下方法,每当用户执行操作时都会执行该方法。我已经设法用一些虚拟函数替换了我的代码,以向大家展示我的问题所在。

为了重现这个问题,我使用了 UITableViewController 的子类,您可以在下面看到它:

class MyTableViewController : UITableViewController {

@IBOutlet nextOrCreateButton: UIButton!

var dummy = [1, 2]
var index: Int = 0

override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return dummy.count
}

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
return tableView.dequeueReusableCellWithIdentifier("TemplateCell") as UITableViewCell!
}

@IBAction func onNextClicked() {
if dummy.count == (index + 1) {
dummy.append(0)
}
index++
}

func updateUI() {
if dummy.count == (index + 1) {
print("Setting text to FOO")
nextOrCreateButton.titleView?.text = "FOO"
if dummy.count == 4 {
print("Setting text to FOOBAR")
nextOrCreateButton.titleView?.text = "FOOBAR"
nextOrCreateButton.enabled = false
}
} else {
print("Setting text to BAR")
nextOrCreateButton.titleView?.text = "BAR"
}
}
}

上面的代码有一个被点击的按钮,当它被点击时,它要么移动到下一个虚拟值,这个虚拟值在这个例子中没有用于任何事情,除了表明改变文本没有工作。

发生的事情是代码执行了它应该执行的方式(根据调试消息),但是按钮的文本更改为它设置的内容,并且几乎立即变回原样。

点击按钮 X 次打印以下日志:

Setting text to BAR
Setting text to FOO
Setting text to FOO
Setting text to FOO
Setting text to FOOBAR

但是,该按钮总是快速变回 FOO,即使像它所说的那样更改为“FOOBAR”之后,该按钮甚至不会像我们在代码中设置的那样保持禁用状态。

最佳答案

不要在 UIButton 上这样做

nextOrCreateButton.titleView?.text = "FOOBAR"

始终使用

nextOrCreateButton.setTitle("FOOBAR", forState: UIControlState.Normal)

或者swift3

nextOrCreateButton.setTitle("FOOBAR", for: .normal)

关于ios - UIButton#titleLabel 在以编程方式更改后恢复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34946345/

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