2013-05-20 72 views
0

我想在我的Cocos2d遊戲中顯示排行榜。下面的代碼在iOS 5.0上正常工作。但在6.1上,它會崩潰,並顯示下面的錯誤消息。在此先感謝您的任何建議。Cocos2d,iOS 6.1,GameCenter在顯示排行榜時崩潰

*終止應用程序由於未捕獲的異常'UIViewControllerHierarchyInconsistency',原因:'視圖一次最多隻能關聯一個視圖控制器!視圖>與關聯。在將這種觀點與之聯繫起來之前清除這種聯繫。

- (void)showLeaderboard:(id)sender 
{ 
GKLeaderboardViewController *leaderboardController = [[GKLeaderboardViewController alloc] init]; 
if (leaderboardController != NULL) 
{ 

    leaderboardViewController = [[UIViewController alloc] init]; 
    leaderboardController.category = self.currentLeaderBoard; 
    leaderboardController.leaderboardDelegate = self; 

    [leaderboardViewController setView:[[CCDirector sharedDirector] openGLView]]; 
    [leaderboardViewController presentViewController:leaderboardController animated:YES completion:nil]; 

} 
} 

- (void)leaderboardViewControllerDidFinish:(GKLeaderboardViewController *)viewController 
{ 
[leaderboardViewController dismissViewControllerAnimated:YES completion:nil]; 
[viewController release]; 
} 

回答

1

試着停止openGL動畫並恢復回來。

-(void)showLeaderboard 
{ 
     [[CCDirector sharedDirector] stopAnimation]; 

     GKLeaderboardViewController *leaderboardViewController = [[[GKLeaderboardViewController alloc] init] autorelease]; 
     leaderboardViewController.leaderboardDelegate = self; 

     AppController *app=(AppController*)[UIApplication sharedApplication].delegate; 
     [app.navController presentModalViewController:leaderboardViewController animated:YES]; 
} 


-(void) leaderboardViewControllerDidFinish:(GKLeaderboardViewController *)viewController 
{ 
    AppController *app=(AppController*)[UIApplication sharedApplication].delegate; 
    [app.navController dismissModalViewControllerAnimated:YES]; 

    [[CCDirector sharedDirector] startAnimation]; 
} 
+0

如果我仍然在使用AppDelegate而不是AppController使用Cocos,那麼您知道需要修改哪些內容嗎?謝謝 – PCoder123

+0

cocos2d版本低於2.0?然後使用AppDelegate和viewController – Guru

+0

謝謝!那工作! – PCoder123