1

J'utilise PKRevealController pour montrer une barre latérale, donc dans le AppDelegate j'ai à régler la UINavigationController et mes ViewControllers:UINavigationController avec la barre latérale de PKRevealController et cocos2d, ne montrant pas la première scène

FirstViewController *firstController = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil]; 

UINavigationController *menuViewController = [[UINavigationController alloc] initWithRootViewController:firstController]; 

UIViewController *sideViewController = [[SideViewController alloc] init]; 

self.revealController = [PKRevealController revealControllerWithFrontViewController:menuViewController leftViewController:sideViewController options:nil]; 

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 

cela fonctionne mais maintenant je dois configurer la scène cocos2d, et maintenant vous avez besoin de configurer le navController, voici où probablement je suis un peu confus, et le premierContrôleur est montré avec la barre latérale (le sideViewController)

et voici ce que j'essaie de faire:

CCGLView *glView = [CCGLView viewWithFrame:[window_ bounds] 
            pixelFormat:kEAGLColorFormatRGB565 
            depthFormat:0 
          preserveBackbuffer:NO 
            sharegroup:nil 
           multiSampling:NO 
           numberOfSamples:0]; 

director_ = (CCDirectorIOS*) [CCDirector sharedDirector]; 

navController_ = [[MyNavigationController alloc] initWithRootViewController:self.revealController]; 
    navController_.navigationBarHidden = YES; 

[window_ setRootViewController:navController_]; 

[self.window makeKeyAndVisible]; 

et la méthode directorDiDReshapeProjection n'est même pas appelée!

-(void) directorDidReshapeProjection:(CCDirector*)director 
{ 
    NSLog(@"called"); 
     if(director.runningScene == nil) { 
      NSLog(@"if statement called"); 
      [director runWithScene: [IntroLayer scene]]; 
    } 
} 

J'appelle la méthode avec un bouton au fond, avec le transitionFromViewController: toViewController: méthode

[self transitionFromViewController::firstController toViewController:[CCDirector sharedDirector] duration:1.0 options:UIViewAnimationOptionTransitionFlipFromRight animations:^{ 
    } completion:^(BOOL finished){if (finished) { 
     firstController=[CCDirector sharedDirector]; 
    }}]; 

la transition va, mais le « autre côté » est une scène noire. Et, comme je l'ai dit, la méthode directorDidReshapeProjection n'est pas appelée: \

J'utilise cette méthode dans d'autres jeux btw, et ils fonctionnent, seulement ici j'ai utilisé PKRevealController qui utilise un UINavigationController et mon approche ne fonctionne pas

quelqu'un peut-il m'expliquer pourquoi? ce que je fais mal avec les UINavigationControllers? (Je suis assez sûr que c'est le problème)

+0

si je mets la méthode runWithScene dans l'application didFinishLaunchingWithOptions: méthode la scène commence avec deux erreurs: Erreur OpenGL 0x0506 dans [CCSprite draw] 531 et erreur OpenGL 0x0502 dans [CCGLView swapBuffers] 283, donc le principal problème pour moi est la méthode directorDiDReshapeProjection non appelée, quelqu'un peut-il imaginer pourquoi? – Adarkuccio

Répondre

0

Résolu! deux choses:

  1. je besoin d'ajouter le [director_ setDelegate: navController_] (je ne l'ai pas remarqué son absence avant) et c'est la raison pour laquelle ma méthode de directorDidReshapeProjection n'a pas été appelé. J'ai ajouté un contrôleur de vue "général" où montrer le PKRevealController et ensuite basculer avec la scène cocos2d, donc d'abord dans l'application: didFinishLaunchingWithOptions: méthode que j'alloue le generalViewController, puis je configure le glView, directeur, et avant de définir le navController, je crée le PKRevealController et définir les frontViewController et leftViewController (dans mon cas, j'ai ces deux).

Après que je fais:

navController_ = [[MyNavigationController alloc] initWithRootViewController:self.revealController]; 

[director_ setDelegate:navController_] 
[window_ setRootViewController:navController_]; 

et maintenant est de travailler sans messages d'erreur, espérons que cette aide quelqu'un

Questions connexes