Приложение вылетает, когда я добавляю несколько 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)
"Если они не принимают никаких параметров. Вы должны проверить это..