这是我的协议。
@protocol UCMapviewDelegate <NSObject>
@required
- (void)slideMapviewIn:(id)sender;
- (void)slideMapviewOut:(id)sender;
@end
这是应该调用的方法(在UCMapViewController.m中)。从按钮
调用showMenu- (void)showMenu
{
// TODO:
if (self.isMapViewPushedAside) {
[self.delegate slideMapviewOut:self];
} [self.delegate slideMapviewIn:self];
}
这就是委托被初始化了。 UCMapViewController对象的初始化程序。
- (id)initWithDelegate:(UCRootViewController *)controller
{
self = [super init];
if (self) {
// Custom initialization
self.delegate = controller;
}
return self;
}
但是当我想使用委托来调用它时,我收到错误:No known instance method for selector 'slideMapviewIn:'
。我该怎么办?
答案 0 :(得分:3)
您的问题是您没有声明您的代理人正在实施该协议。如果你不这样做,它怎么知道它实现了该协议?这个错误很自然。
您必须将其声明为id<UCMapviewDelegate>
,为此,您必须导入包含该协议的标头。