このようなことをしてみてください。uiviewcontrollerでcocosシーンをプッシュする場合は、このコードをViewDidLoadメソッドに追加します。
-(void)viewDidLoad{
[super viewDidLoad];
CCDirector *director = [CCDirector sharedDirector];
if([director isViewLoaded] == NO)
{
CCGLView *glView = [CCGLView viewWithFrame:[[[UIApplication sharedApplication] keyWindow] bounds]
pixelFormat:kEAGLColorFormatRGB565
depthFormat:0
preserveBackbuffer:NO
sharegroup:nil
multiSampling:NO
numberOfSamples:0];
director.view = glView;
[director setAnimationInterval:1.0f/60.0f];
[director enableRetinaDisplay:YES];
}
director.delegate = self;
[self addChildViewController:director];
[self.view addSubview:director.view];
[director didMoveToParentViewController:self];
if(director.runningScene)
{
[director replaceScene:[SceneFirst scene]];
}
else
{
[director runWithScene:[SceneFirst scene]];
}
}
ここで、SceneFirstは、プッシュするcocosシーンです。UiViewControllerにCCDirectorDelegateをデリゲートとして追加するだけです。このコード行をViewDidUnloadメソッドに追加します
[[CCDirector sharedDirector] setDelegate:nil];
Uikitビューに戻るには、タップしたCCmenuでこのコードを呼び出します
[[CCDirector sharedDirector] stopAnimation];
AppDelegate *app = (AppDelegate *)[[UIApplication sharedApplication] delegate];
[app.navigationController popViewControllerAnimated:YES];
この助けを願っています!!:)