IBAction内でsenderを識別する方法
1つのアクションメソッドで、複数のsenderから送られたメッセージを処理する際に、
調べたことをメモとしてまとめておく。
このためには、各種GUI部品の親クラスとなっている UIView class の tag プロパティを使用する。
tag
The receiver’s tag, an integer that you can use to identify view objects in your application.@property(nonatomic) NSInteger tag
サンプルコード:
1つのView上に2つのボタンがあり、1つのアクションメソッドでそれらのボタンがクリックされた時の処理をまとめて行う。
#import <UIKit/UIKit.h> // ボタン識別用のenum typedef enum { Button_1, Button_2 } ButtonType; @interface MyView : UIViewController { IBOutlet UIButton *button1; IBOutlet UIButton *button2; } // メッセージを送信したsenderを識別するアクションメソッド - (IBAction) identifySender:(id)sender; @end @implementation MyView - (void) viewDidLoad { // 各ボタンの tag プロパティに識別情報をセット button1.tag = Button_1; button2.tag = Button_2; [super viewDidLoad]; } - (IBAction) identifySender:(id)sender { // senderを識別するため、sender の tag プロパティをチェック if((UIButton*)sender.tag == Button_1) { NSLog(@"button1 is a sender of this message."); } else if ((UIButton*)sender.tag == Button_2) { NSLog(@"button1 is a sender of this message."); } } @end