我在管理地图视图的控制器的头文件中声明了一个协议。
@protocol UCMapViewDelegate <NSObject>
@required
- (void)pushMapviewRight;
@end
我在另一个视图控制器 (.h) 中声明协议的实现并在 .m 文件中实现它
// in the UCRootViewController.h
@interface UCRootViewController : UIViewController <UCMapviewDelegate>
// in the UCRootViewController.m
- (void)pushMapviewRight
{
NSLog(@"push mapview right");
}
我将委托设置为指向 rootviewController 的属性。这是在我的 MapviewController 的 viewDidLoad() 中完成的,带有一个 property @property (weak, nonatomic) id<UCMapViewDelegate> delegate;
。
// in UCRootViewController
self.mapviewController.rootviewController = self;
// in UCMapViewController
self.delegate = (id<UCMapviewDelegate>)self.rootviewController;
调用委托方法。当 mapviewController 中的一个按钮被按下并且它工作时,showMenu() 被执行。但委托方法不会被调用。
- (void)showMenu
{
NSLog(@"show menu");
[self.delegate pushMapviewRight];
}
但是什么也没发生……怎么了?!非常感谢您的帮助!