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

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

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

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

Swift

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

Q&A

解決済

1回答

4899閲覧

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

makkuro

総合スコア57

Xcode

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

Swift

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

1グッド

0クリップ

投稿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👍を押しています

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

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

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

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

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

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

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

投稿2018/12/24 01:03

takabosoft

総合スコア8356

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

makkuro

2018/12/24 08:41

ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問