Приложение вылетает, когда я добавляю несколько MenuItems в cocos2d - PullRequest
0 голосов
/ 16 января 2012

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

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

</p> <pre><code> 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];

вот мои функции выбора </p> <pre><code>-(void)startGame:(id)sender { NSLog(@"start game"); } -(void)setttings:(id)sender { NSLog(@"settings"); } -(void)gameCentre:(id)sender { NSLog(@"game centre"); }

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

Ответы [ 3 ]

0 голосов
/ 16 января 2012

, поскольку ваши селекторы заканчиваются на ":", то есть @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
}
0 голосов
/ 16 января 2012

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

0 голосов
/ 16 января 2012

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

...