按下时更改按钮标题的想法?

The idea of changing a button's title when pressed?

使用 Swift,我想在点击时更改按钮的标题,例如从 "Start" 到 "Stop",反之亦然。这就是我所做的:

var runningcode = false

@IBAction func BUTTON(sender: UIButton) {
    if runningcode {
        runningcode = false
        sender.setTitle("Start", forState: UIControlState.Normal)
    } else {
        runningcode = true
        sender.setTitle("Stop", forState: UIControlState.Normal)
    }
}

这成功了。但是我不明白为什么在.setTitle之前插入"sender"而不是"BUTTON"?插入我的按钮名称以表明我想更改该特定按钮的标题似乎更合乎逻辑。我只有 2 周以上的编程时间,所以我希望你们能用最基本的可理解的术语来解释。或者,如果有人可以指导我 book/site/author 进行基础学习,我将不胜感激。

我的问题是关于 sender.setTitle("Button Title", forState: UIControlState.Normal) 行:

1) 什么是"sender"?这是什么意思?为什么使用它而不是我的按钮名称?

2) 什么是forState? / 用户界面控制状态?为什么是正常的?这是什么意思?

使用按钮状态,并为正常状态和高亮状态设置不同的标题:

sender.setTitle("Unpressed", forState: UIControlState.Normal)
sender.setTitle("Pressed", forState: UIControlState.Highlighted)

如果您希望标题更改保持不变,请使用按钮的选定状态而不是突出显示。

sender.setTitle("Selected", forState: UIControlState.Selected)

//Inside your button callback
sender.selected = !sender.selected

当你的手指在按钮上时,它处于高亮状态。您需要在创建按钮时进行设置。无需将此代码添加到按钮按下的回调中。

据我所知,sender 就是调用操作的任何东西,在本例中是链接到 IBAction BUTTON.

的程序中的按钮

可以找到有关 UIControlState 的更多信息here