【问题标题】:The idea of changing a button's title when pressed?按下时更改按钮标题的想法?
【发布时间】:2015-05-01 13:51:07
【问题描述】:

使用 Swift,我想在点击时更改按钮的标题,例如从“开始”到“停止”,反之亦然。这就是我所做的:

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 周以上的编程时间,所以我希望你们能用最基本的可理解术语解释。或者,如果有人可以将我引导到一本书/网站/作者进行基础学习,我将不胜感激。

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

1) 什么是“发件人”?这是什么意思?为什么使用它而不是我的按钮名称?

2) 什么是 forState? /UIControlState?为什么是正常的?什么意思?

【问题讨论】:

    标签: xcode swift button title


    【解决方案1】:

    据我所知,sender 就是调用该动作的任何东西,在这种情况下,是您程序中链接到 IBAction BUTTON 的按钮。

    更多关于 UIControlState 的信息可以在here找到。

    【讨论】:

      【解决方案2】:

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

      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
      

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

      【讨论】:

        猜你喜欢
        • 2015-07-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-28
        相关资源
        最近更新 更多