web-dev-qa-db-ja.com

ボタンがクリックされたときにボタンのテキストを変更するにはどうすればよいですか? -Swift

私はプログラミングに不慣れなので、それを覚えておいてください。私はこのサイトで他のいくつかの質問を見て、彼らが与えた答えを試しましたが、それらは私にとってはうまくいきませんでした。ボタンをに変更するために使用しようとしているコードは次のとおりです。

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

これは私が見つけたこれを行うための最も一般的な方法ですが、いくつかのエラー「予期される宣言」「期待される属性名」「期待される」、「セパレータ」などが発生します。

私が試したもう1つのことは、他の人が提案したことです。

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

これと私が試した他のいくつかのことはすべてエラーを引き起こします "'(UIButton)->()'には 'setTitle'という名前のメンバーがありません。

これはばかげた質問かもしれませんが、理解できません。これは私が自分で開発しようとした最初のアプリであり、この問題が発生するまでうまくいきました。どんな助けでもありがたいです、そしてあなたが私が間違っていることについて詳細に入ることができればそれは素晴らしいでしょう!

(ビューがロードされたときではなく、ボタンが押されたときにのみボタンを変更したい。)

7
Jaxon

最初の質問では、SwiftファイルでObjective-Cコードを使用しようとしています。

2番目の例では、制御状態を渡していません。

どちらの場合も、ジェレミーポープが指摘しているように、ボタンではなく、メソッドとしてAnswerButtonAを参照しています。

ボタンへのコンセントを作成する必要があります(または、ジェレミーの回答のようにsenderを使用します)。

そこから、あなたが探しているものは次のとおりです。

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

入力中にメソッドシグネチャがポップアップ表示されます。

enter image description here

29
Aaron Brager

押されているボタンは、senderと呼ばれる引数として送信されています。 AnswerButtonAは、作成したメソッドです。単なるスタイルノートです。通常、メソッドの最初の文字は小文字です。繰り返しになりますが、AnswerButtonAはボタンをクリックしたときに呼び出されるメソッドであり、senderは実際にクリックされたボタンです。

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

あなたはこれを試すことができます

@IBOutlet  answerButtonA : UIButton!

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

変数名とクラス名の規則を学習するためのSwiftスタイルガイド)もお読みください。 https://github.com/raywenderlich/Swift-style-guide

2
rakeshbs

このコードを試してください、これは間違いなくあなたを助けます

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

これも動作します

(sender as AnyObject).setTitle("Un-Down", for: .normal)
0
Ahmadiah
sender.title = "my text here" 

xcode9.3.1の場合

0
K. Mitnick