1

这是我的协议。

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

4

1 回答 1

3

您的问题是您没有将委托声明为实现该协议。如果你不这样做,它怎么知道它实现了那个协议?这个错误很自然。

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

于 2012-05-10T02:45:20.310 回答