質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.02%
Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

UIButtonのテキストを変更したい

makkuro
makkuro

総合スコア57

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

1回答

1グッド

0クリップ

2795閲覧

投稿2018/12/22 02:33

編集2018/12/23 03:01

XcodeでiPhoneアプリ作成を練習中です。

UIButtonのアクションを作成して、senderで自身のオブジェクトを引数として渡し、ボタンがタップされたときに、そのボタン自身の文字が変更されるようにしたいです。

そこで、自分なりに頑張って以下のようにコードを書いてみたのですが、ボタンタップ時に一瞬だけ『hello』と表示されるものの、すぐ元の文字に戻ってしまいます。ボタンをタップすると、タップを終了した後もhelloと表示する方法が知りたいです。

Swift

1import UIKit 2 3class ViewController: UIViewController { 4 5 @IBAction func savePhoto(_ sender: UIButton) { 6 sender.titleLabel?.text = "hello" 7 } 8 9 override func viewDidLoad() { 10 super.viewDidLoad() 11 } 12 13}

そして、もうひとつ知りたいのですが、

Swift

1sender.titleLabel?.text = "hello" 2sender.setTitle("hello", for: .normal)

この二つのコードの違いについても教えていただきたいです。

よろしくお願いします。

maztak👍を押しています

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

回答1

1

ベストアンサー

ご自身でもなんとなく感づかれていると思いますが

sender.setTitle("hello", for: .normal)

↑基本的にはこちらを使ってください。

UIButtonは、ボタンの状態毎に文字や画像、背景画像を設定できるようになっています。
(例えば押している間だけ文字を変えるなんてことも出来ます)

この機能があるので、sender.titleLabel?.text = "hello"で一時的に変えてもUIButtonが状態に合わせてタイトルを再設定してしまい、文字が戻ってしまうと推測されます。

sender.titleLabel?にアクセスするのはフォントや文字寄せなど、状態毎にパラメーターを設定できないものを調節する際ぐらいかと思います。

投稿2018/12/24 01:03

takabosoft

総合スコア8337

maztak👍を押しています

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

makkuro

2018/12/24 08:41

ありがとうございます

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.02%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています