Нераспознанный селектор, когда я нажимаю на CCMenuItemImage

Я пытаюсь загрузить меню "Пуск" для игры, и я добавил кнопку воспроизведения, используя CCMenuItemImage. Все загружается просто отлично. Однако, когда я пытаюсь нажать на кнопку воспроизведения, я получаю это сообщение об ошибке.

013-08-18 13: 38: 46.091 PeevedPenguins-iOS [5169: c07] * Завершение работы приложения из-за необработанного исключения "NSInvalidArgumentException", причина: '-[StartMenuLayer ]: нераспознанный селектор, отправленный экземпляру 0x9e5b400'

Я не знаю, что я делаю неправильно, так как мой селектор определен и все. Пожалуйста, помогите мне? Я дергал себя за волосы, пытаясь понять, почему Xcode сделает это

@interface StartMenuLayer ()

@end

@implementation StartMenuLayer

-(id) init
{
    if ((self = [super init]))
    {
        CCMenu *myMenu = [CCMenu menuWithItems: nil];

        CCMenuItemImage *menuBackground = [CCMenuItemImage itemWithNormalImage:@"menu-background-hd.png" selectedImage:@"menu-background-hd.png" target:self selector:nil];
        [myMenu addChild:menuBackground];

        CCMenuItemImage *menuPlayButton = [CCMenuItemImage itemWithNormalImage:@"button-hd.png" selectedImage:@"button-hd.png" target:self selector:@selector(playGame:)];
        menuPlayButton.position = ccp(0, 0);
        [myMenu addChild:menuPlayButton];

        CCMenuItemImage * menuItem3 = [CCMenuItemImage itemWithNormalImage:@"catapult-hd.png"
                                                             selectedImage: @"catapult-hd.png"
                                                                    target:self
                                                                  selector:@selector(doSomethingThree:)];
        [myMenu addChild: menuItem3];

        menuPlayButton.position = ccp(0,-83.5);

        [self addChild:myMenu];
    }

    return self;
}

-(void) playGame:(CCMenuItem *)sender
{
//    [[CCDirector sharedDirector] replaceScene: (CCScene*)[[GameLayer alloc] init]];
    NSLog(@"Play the game!");
}

- (void) doSomethingThree:(CCMenuItem *)sender
{
    NSLog(@"The third menu was called");
}

@end

1 ответ

Решение

Вы настроили один из ваших пунктов меню с nil селектор [разрывы строк добавлены для ясности]:

CCMenuItemImage *menuBackground = [CCMenuItemImage
                                  itemWithNormalImage:@"menu-background-hd.png"
                                  selectedImage:@"menu-background-hd.png" 
                                  target:self
                                  selector:nil];
Другие вопросы по тегам