Приложение вылетает, когда я добавляю несколько MenuItems в cocos2d

Это прекрасно работает, когда я добавляю только один MenuItem. но когда я обращаюсь к другим двум элементам MenuItem, происходит сбой с исключением "NSInvalidArgumentException", причина: "+[NSInvocation invocationWithMethodSignature:]: аргумент сигнатуры метода не может быть равен нулю"

Вот что я делаю

    CCMenuItem *startGame = [CCMenuItemImage itemFromNormalImage:@"start-game.png" selectedImage:@"start-game.png" target:self selector:@selector(startGame:)];


    CCMenuItem *settings = [CCMenuItemImage itemFromNormalImage:@"settings.png" selectedImage:@"settings.png" target:self selector:@selector(settings:)];


    CCMenuItemImage *gameCentre = [CCMenuItemImage itemFromNormalImage:@"game-centre.png" selectedImage:@"game-centre.png" target:self selector:@selector(gameCentre:)];


    CCMenu *menu = [CCMenu menuWithItems:startGame, settings, gameCentre, nil];
    [menu alignItemsVerticallyWithPadding:10];
    [self addChild:menu z:1];

вот мои функции выбора

-(void)startGame:(id)sender
 {
     NSLog(@"start game");
 }
-(void)setttings:(id)sender
 {
     NSLog(@"settings");
 }
-(void)gameCentre:(id)sender
 {
     NSLog(@"game centre");
 }

Спасибо заранее за любую помощь

3 ответа

Решение

Поскольку ваши селекторы заканчиваются на ":", то есть @selector(gameCentre:), убедитесь, что методы в вашем классе действительно принимают аргумент

- (void)startGame:(id)sender
{
    // do whatever you want here
}

- (void)settings:(id)sender
{
    // do whatever you want here
}

- (void)gameCentre:(id)sender
{
    // do whatever you want here
}

Похоже, что ваши функции выбора (startGame, settings, gameCentre) написаны неправильно.

Ваш селектор может не принимать никаких параметров, и вы упоминаете "@selector(startGame:)"Как будто они принимают параметр. Это может быть как"@selector(startGame)"Если они не принимают никаких параметров. Вы должны проверить это..

Другие вопросы по тегам