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会覆盖所有州的文本,但事实并非如此,这没关系,只是需要记住一点