マップ ビューを管理する Controller のヘッダー ファイルでプロトコルを宣言しました。
@protocol UCMapViewDelegate <NSObject>
@required
- (void)pushMapviewRight;
@end
別のView Controller(.h)でプロトコルの実装を宣言し、.mファイルに実装しています
// in the UCRootViewController.h
@interface UCRootViewController : UIViewController <UCMapviewDelegate>
// in the UCRootViewController.m
- (void)pushMapviewRight
{
NSLog(@"push mapview right");
}
rootviewController を指すプロパティにデリゲートを設定しています。これは、プロパティを使用して、MapviewController の viewDidLoad() で行われます@property (weak, nonatomic) id<UCMapViewDelegate> delegate;
。
// in UCRootViewController
self.mapviewController.rootviewController = self;
// in UCMapViewController
self.delegate = (id<UCMapviewDelegate>)self.rootviewController;
委任されたメソッドを呼び出します。showMenu() は、mapviewController のボタンが押されて機能するときに実行されます。ただし、デリゲート メソッドは呼び出されません。
- (void)showMenu
{
NSLog(@"show menu");
[self.delegate pushMapviewRight];
}
しかし、何も起こりません..何が問題なのですか?! 助けていただければ幸いです。