Ios UIButton#标题标签以编程方式更改后会恢复
我有一个连接到Ios UIButton#标题标签以编程方式更改后会恢复,ios,Ios,我有一个连接到ui按钮的@IBOutlet。在我的代码中,我有以下方法,每当用户执行某个操作时,都会执行该方法。我已经设法用一些伪函数替换了我的代码,向大家展示了我的问题所在 要复制此问题,我使用UITableViewController的子类,您可以在下面看到它: class MyTableViewController : UITableViewController { @IBOutlet nextOrCreateButton: UIButton! var dummy =
ui按钮的@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”之后,按钮也不会像我们在代码中设置的那样保持禁用状态 不要在ui按钮上执行此操作
nextOrCreateButton.titleView?.text = "FOOBAR"
始终使用
nextOrCreateButton.setTitle("FOOBAR", forState: UIControlState.Normal)
还是迅捷3
nextOrCreateButton.setTitle("FOOBAR", for: .normal)
您是否尝试过使用?谢谢,您能否解释一下为什么会发生这种情况?ui按钮
只管理不同状态(UIControlStates)的标题视图
,忽略您设置为textView.text的内容。我们可以假设设置textView.text会覆盖所有州的文本,但事实并非如此,这没关系,只是需要记住一点