【问题标题】:How do I change the text of a button when it is clicked? - Swift单击按钮时如何更改按钮的文本? - 斯威夫特
【发布时间】:2015-04-12 16:23:48
【问题描述】:

我是编程新手,所以请记住这一点。我在这个网站上查看了其他几个问题,并尝试了他们给出的答案,但这些对我没有用。我试图用来将按钮更改为的代码是这样的:

@IBAction func AnswerButtonA(sender: UIButton)
{
    [AnswerButtonA setTitle:@"Hello World" forState:UIControlStateNormal];
}

这是我发现的最常用的方法,但它会带来几个错误“预期的声明”“预期的属性名称”“预期的','分隔符,以及其他一些错误。

其他人建议我尝试的另一件事是:

@IBAction func AnswerButtonA(sender: UIButton)
{
    AnswerButtonA.setTitle("Hello World")
}

这个以及我尝试过的其他一些事情都会引发错误“'(UIButton) ->()' does not have a member named 'setTitle'.

我意识到这可能是一个愚蠢的问题,但我想不通。这是我尝试自己开发的第一个应用程序,在这个问题之前我做得很好。任何帮助将不胜感激,如果您能详细说明我做错了什么,那就太棒了!

(我只希望按钮在按下时更改,而不是在加载视图时更改。)

【问题讨论】:

  • AnswerButtonA 是什么?

标签: ios swift text uibutton


【解决方案1】:

在您的第一个问题中,您尝试在 Swift 文件中使用 Objective-C 代码。

在您的第二个示例中,您没有传递控制状态。

在这两种情况下,正如 Jeremy Pope 指出的那样,您指的是 AnswerButtonA 作为方法,而不是按钮。

您需要为您的按钮创建一个出口(或在 Jeremy 的回答中使用 sender)。

从那里,这就是您要寻找的东西:

answerButtonA.setTitle("Hello World", forState: .Normal)

方法签名将在您输入时弹出:

【讨论】:

  • 非常感谢!!我没有想到在我正在阅读的答案中区分 swift 和 Objective-c,我以后一定会记住这一点!这非常有效!谢谢!!
  • 很好的答案,既有资源又有气质。
【解决方案2】:

被按下的按钮作为一个名为 sender 的参数发送。 AnswerButtonA 是您创建的方法。只是一个样式注释,通常方法的第一个字母是小写的。同样,AnswerButtonA 是单击按钮时调用的方法,sender 是实际单击的按钮。

IBAction func AnswerButtonA(sender: UIButton)
{
    //sender is the button that was pressed
    sender.setTitle("HelloWorld", forState: .Normal)
}

【讨论】:

    【解决方案3】:

    你可以试试这个

    @IBOutlet  answerButtonA : UIButton!
    
    @IBAction func answerButtonAClicked(sender: UIButton)
    {
         answerButtonA.setTitle("YourTitle", forState: UIControlState.Normal)
    }
    

    还可以阅读 swift 样式指南,了解变量名和类名的约定。 https://github.com/raywenderlich/swift-style-guide

    【讨论】:

    • 如果您将操作设置为将按钮作为参数发送,则无需同时为其创建@IBOutlet。或者,如果您要使用插座,请将操作设置为不发送任何内容。
    【解决方案4】:

    试试这段代码,这绝对对你有帮助

    @IBAction func AnswerButtonA (sender: UIButton!)
    {
      sender.setTitle("Hello World", forState: UIControlState.Normal)
    }
    

    【讨论】:

      【解决方案5】:

      这个也可以

      (sender as AnyObject).setTitle("Un-Down", for: .normal)
      

      【讨论】:

        【解决方案6】:
        sender.title = "my text here" 
        

        对于 Xcode 9.3.1

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多