0

私はcocos2dの初心者で、cocos2dの内部からセグエを実行しようとしています。

現在、次の機能を設定しています。

-(void) return_mm {
    NSLog(@"returned to main menu");
    UIViewController * con = self.controller;
    [con performSegueWithIdentifier:@"Game2MenuSegue" sender:con];
}

CCMenuItemが押されるたびに実行されます。これは実際に一度は機能します。しかし、ゲームシーンに戻ると、メニューボタンが機能しなくなります。

具体的には、セグエが呼び出され、preparetosegue関数が実行されますが、遷移は発生しません。他のビューのviewWillAppear関数は実行されません。

私はおそらく愚かなことをしているので、誰かがこれを行うことについて提案があれば、それは大いにありがたいです。

これは、私が現在ゲームビューコントローラーのwillDidAppear関数に持っているものです。

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];


    if ([[CCDirector sharedDirector] isPaused]) {

        [[CCDirector sharedDirector] resume];

        [mainView addSubview:[[CCDirector sharedDirector] openGLView]];

        return;
    }


    EAGLView *glview = [EAGLView viewWithFrame:self.view.bounds
                                   pixelFormat:kEAGLColorFormatRGB565   // kEAGLColorFormatRGBA8
                                   depthFormat:0                        // GL_DEPTH_COMPONENT16_OES
                        ];
    CCDirector *director = [CCDirector sharedDirector];

    //[director setDisplayStats:kCCDirectorStatsFPS];    
    // Enables High Res mode (Retina Display) on iPhone 4 and maintains low res on all other devices

    if( ! [director enableRetinaDisplay:YES] )
        CCLOG(@"Retina Display Not supported");

    [window makeKeyAndVisible];

    [mainView addSubview:glview];

    [director setOpenGLView:glview];

    CCScene *scene = [CCScene node];
    GameScene * gs =[GameScene sceneWithController:self]; 
    [gs returnFromMenu];
    [scene addChild:gs];

    if (director.runningScene) {
        [director replaceScene:scene];
    } else {
        [director runWithScene:scene];
    }
}
4

1 に答える 1

0

問題が見つかりました。作成時にコントローラーを保存しましたが、ゲーム ビューに戻るときにコントローラーを更新しませんでした。コントローラーが古かったので、セグエは何もしませんでした。

追加するしかなかった

gs.controller = self

スーパーへの呼び出しの下

于 2012-05-22T23:01:27.297 に答える