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 に答える