当点击按钮时,我该如何更改按钮文本?- Swift

9

我是一个编程新手,请注意这点。我已经查看了该网站上的几个其他问题,并尝试了他们给出的答案,但这些答案对我没有用。我正在尝试使用以下代码来更改按钮:

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

这是我发现的最常用的方法,但它会引起几个错误:“Expected declaration”、“Expected attribute name”、“expected ',' separator” 以及其他一些错误。

另一件我尝试过的事情是别人建议的:

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

这里有一些我尝试过的方法,但都出现了错误“'(UIButton) ->()'没有名为'setTitle'的成员”。
我知道这可能是一个愚蠢的问题,但我无法解决它。这是我自己开发的第一个应用程序,除此之外一切都很好。感谢您提供任何帮助,并且如果您能详细说明我的错误,那将是太棒了!
(我只想要按钮在按下时更改,而不是在视图加载时更改。)

1
AnswerButtonA 是什么? - Midhun MP
6个回答

31

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

在您的第二个示例中,您未传递控件状态。

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

您需要创建一个与您的按钮相关联的outlet(或者像在Jeremy的答案中一样使用sender)。

从那里开始,这就是您要寻找的内容:

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

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

在此输入图像描述


非常感谢!我没有想到在阅读答案时要区分Swift和Objective-C,我以后一定会记住的!这个方法完美地解决了我的问题!谢谢! - Jaxon
1
非常好的回答,既提供了资源,又表现出了良好的态度。 - Mercutio

4
被按的按钮作为参数被发送,名为“sender”。AnswerButtonA是你创建的方法。请注意一下风格,通常方法的第一个字母是小写的。因此,当你单击按钮时调用的方法是AnswerButtonA,而sender是实际被点击的按钮。
IBAction func AnswerButtonA(sender: UIButton)
{
    //sender is the button that was pressed
    sender.setTitle("HelloWorld", forState: .Normal)
}

2
你可以尝试这个。
@IBOutlet  answerButtonA : UIButton!

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

同时阅读Swift风格指南,以了解变量名称和类名称的惯例。 https://github.com/raywenderlich/swift-style-guide


1
如果您将操作设置为将按钮作为参数发送,则无需为其创建@IBOutlet。或者,如果您要使用outlet,请将操作设置为不使用任何内容。 - Jeremy Pope

1

尝试这段代码,它肯定会对你有帮助

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

0
sender.title = "my text here" 

适用于 Xcode 9.3.1


0

这个也可以正常工作

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接