Delegateメソッドを実装したときのメモ
Hogeクラス
今回は、Hogeクラスであるイベント(onTapEvent)が起きたときに、Fugaクラスに実装しているデリゲートメソッド(hogeDelegateMethod)を呼び出す例。
Hoge.h
#import <UIKit/UIKit.h>
@protocol HogeDelegate
//Fugaクラスに実装するメソッド
- (void)hogeDelegateMethod;
@end
@interface Hoge : UIViewController
@property (weak,nonatomic) id <HogeDelegate> delegate
@end
Hoge.m
#import "Hoge.h"
@interface Hoge ()
@end
@implementation Hoge
- (void)viewDidLoad
{
[super viewDidLoad];
}
//onTapEventが実行されるたびにデリゲートメソッドを呼び出す
- (void)onTapEvent
{
//Fugaクラスに実装してあるHogeDelegateMethodを呼び出す
[self.delegate hogeDelegateMethod];
}
@end
Fugaクラス
Fuga.h
#import <UIKit/UIKit.h>
#import "Hoge.h"
@interface Fuga <HogeDelegate>
@end
今回は、初期化とともにHogeクラスのインスタンスを生成したが、別にインスタンスを生成するタイミングはいつでもOK
Fuga.m
#import "Fuga.h"
@interface Fuga ()
@end
@implementation Fuga
//初期化とともにHogeクラスのインスタンスを生成し、delegateプロパティに自身(Fugaクラスのインスタンス)を設定
-(id)init{
if((self = [super init]) != nil){
Hoge *hoge = [[Hoge alloc] init];
hoge.delegate = self;
}
return self;
}
//Hogeクラスから呼び出されるデリゲートメソッド
- (void)hogeDelegateMethod
{
NSLog(@"デリゲート");
}
@end
参照
・Objective-Cの基礎(プロトコル定義)
・カスタマイズしたUITableViewCellから自前のイベントを受け取る
・Objective-Cでprotocolとかdelegateとかいい感じに警告をなくす