【文法】Objective-Cでのボタンのタイトルによる処理の変更方法


2011.02.20【文法】Objective-Cでのボタン(UIButton)のタイトルの変更でリクを頂き、
今回はボタンのタイトルによる処理の変更方法について書いてみます。
“またいつかの機会に”と書いていたのですが忘れてましたね(汗)。。。

前提として、BtnAボタンにTouchBtnAメソッドへアクションを設定しておきます。
また、BtnAのタイトルは初期値として「メニューを表示」が入っているとします。
110621-0006.png

次のようにコードを書きます。

- (IBAction) TouchBtnA:(id)sender {
    //id型のsenderをUIButton型に変換する
    UIButton *senderBtn = (UIButton *)sender;
    
    //タイトルにより分岐(文字列なのでswitch文は使えない)
    if ([senderBtn.currentTitle isEqualToString: @"メニューを表示"]) {
        //タイトルを変更
        [senderBtn setTitle:@"非表示" forState:UIControlStateNormal];

        //何らかの処理
        ・・・

    }else{
        //タイトルを戻す
        [senderBtn setTitle:@"メニューを表示" forState:UIControlStateNormal];

        //何らかの処理
        ・・・
    }
}


このように引数のsenderが呼び出し元を表しています。
これをまずはUIButton型に変換して、タイトルで判別すればいいわけです。

アクションのメソッドの場合、原則として引数は(id)senderですが、
最初からUIButton型にしか使わないことが分かっているならば
(UIButton*)senderにしておけばわざわざUIButton型に変換する手間は省けます。

要するに、
・いろいろな型のオブジェクトを引数にする場合は、(id)sender
・ある特定の型のオブジェクトを引数にする場合は、(その型)sender
とするのが楽でしょうね。


↓この記事が参考になったら拍手をクリックお願いします。今後のブログ作りに役立てたいので。
関連記事

コメントの投稿

非公開コメント

No title

setTitle参考にさせていただきました。ありがとうございます。ボタンのtitleLabelはreadOnlyなんですね。

アプラーさんへ

アプラーさん、どうもありがとうございます。
拍手のコメントに書きこんでいただいたのですが、この拍手のコメントは
アプラーさんからは見れないようなのでこちらに移させていただきました。
もし、だめだったら連絡ください。

ところで、ボタンのtitleLabelはreadOnlyではないですね。
[senderBtn.titleLabel setText: @"あああ"];
のようにすることができます。
ただし、あくまでボタンの中でラベルを入れてそのテキストをセットしたという感じなので、
ボタンのタイトルにはなりませんね。
(見かけは同じに見えますが。)

調べてみると

アップルの「iOS Developer Library」よりUIButtonのtitleLabel二ついて調べてみました。
http://developer.apple.com/library/ios/#documentation/uikit/reference/UIButton_Class/UIButton/UIButton.html

どうやら、titleLabel自体はread-onlyなのですが、titleLabelに関するプロパティはread/writeの両方ができるみたいです。(titleLabel.font、titleLabel.lineBreakMode、titleLabel.shadowOffsetなど)
う~ん、ややこしいですね。

<アップルより引用>
titleLabel
A view that displays the value of the currentTitle property for a button. (read-only)
・・・(途中略)・・・
Although this property is read-only, its own properties are read/write. Use these properties to configure the appearance of the button label.

<てぃーによる日本語訳>
titleLabel
ボタンのcurrentTitleプロパティの値を表示するプロパティです。
・・・(途中略)・・・
このプロパティ(titleLabelのこと)はread-onlyですが、これ自体のプロパティはread/writeです。
これらのプロパティはボタンのラベルの外観を設計する場合に使用してください。
プロフィール

てぃー

Author:てぃー
詳しい自己紹介:こちら
Twitter:@teapipin


follow us in feedly 
にほんブログ村 IT技術ブログへ にほんブログ村 PC家電ブログへ
現在の閲覧者数:

ブログ内検索
今日のアクセス数の多い記事
カレンダー

06月 | 2017年07月 | 08月
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 - - - - -
過去記事ダイジェスト
お知らせ

ツイッター分析の分析結果が和歌山大学防災研究教育センターの論文に引用
防災の研究において評価!

2015年版ツイッター分析(世界編)が始動!
今回は世界の国別・言語別ツイートを分析!

ツイッター分析の分析結果が慶應義塾大学有名教授の研究論文などに引用
文系の研究までも制覇!

Interval Timer EX
有名雑誌「Mac Fan 2015月2月号」に「インターバルタイマーEX」が3度目の掲載!!ポモドーロテクニックに有効!

自作Macアプリ3部作が2014年 Vector 年間ダウンロードランキング Mac トップ100にすべてランクイン

TimeCalcを公開しています!
時間計算、年齢計算、学歴欄作成など。

ツイッター分析の分析結果が人工知能の研究に!
ブログが学会発表で引用されました。

今まで開発したiPhoneアプリのソースコードを公開しています!
勉強に役立ててください。


2013年 Vector 年間ダウンロードランキング Mac トップ100に「デジカメ変更日を撮影日に一括変更 for Mac」と「インターバルタイマーEX」がランクイン

Interval Timer EX
有名雑誌「Mac Fan 2013月4月号」に「インターバルタイマーEX」が2度目の掲載!!

リアルタイムツイッター地図
リアルタイムツイッター地図を公開しています!
位置情報付きツイートをリアルタイムに表示します。

新たなツイッター分析としてイベントツイート分析を行っています!

2012年8月1日(水)開催の「Twitter勉強会」で発表
ツイッター調査:約173万ツイートを調査して分かったTwitterの利用動向 #twtr_hack from teapipin


Interval Timer EX
有名雑誌「Mac Fan 2012月3月号」に「インターバルタイマーEX」が掲載!!



 

はてなブックマークの人気記事
ツイート&いいね!ランキング