我的协议方法的选择器没有已知的实例方法

时间:2012-05-10 02:00:30

标签: objective-c ios cocoa-touch protocols

这是我的协议。

@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:'。我该怎么办?

1 个答案:

答案 0 :(得分:3)

您的问题是您没有声明您的代理人正在实施该协议。如果你不这样做,它怎么知道它实现了该协议?这个错误很自然。

您必须将其声明为id<UCMapviewDelegate>,为此,您必须导入包含该协议的标头。