我想向游戏中心展示UIView。
-(void)authenticateLocalPlayer {
[[GKLocalPlayer localPlayer] authenticateWithCompletionHandler:^(NSError *error) {
if (error)
else
}];
}
- (void)didLoadFromCCB {
[self authenticateLocalPlayer];
_viewController = [[UIViewController alloc] init];
GKLeaderboardViewController* leaderboardController = [[GKLeaderboardViewController alloc] init];
if (leaderboardController != nil){
leaderboardController.leaderboardDelegate = self;
leaderboardController.timeScope = GKLeaderboardTimeScopeAllTime;
leaderboardController.category = @"mygamehighscore";
[_viewController presentViewController: leaderboardController animated: YES completion:nil];
}
[[[CCDirector sharedDirector] view] addSubview:_viewController.view];
}
但它显示此错误,并且没有弹出游戏中心。
Warning: Attempt to present <GKLeaderboardViewController: 0x15db51f0> on <UIViewController: 0x15db4d10> whose view is not in the window hierarchy!
答案 0 :(得分:1)
我认为这是因为你在错误的视图控制器上调用方法presentViewController
(调用方法时不在层次结构中)。
无需创建新的UIViewController,您可以使用Cocos2D提供的那个(我的代码指的是Cocos2D-iPhone 2.0)。
尝试:
AppController * appController = (AppController*) [[UIApplication sharedApplication] delegate];
[appController.navController presentViewController: leaderboardController animated:YES completion:nil];
答案 1 :(得分:1)
看起来应该是这样的:
[[CCDirector sharedDirector] presentViewController: leaderboardController animated: YES completion:nil];
完整的代码:
GKLeaderboardViewController *leaderboardController = [[GKLeaderboardViewController alloc] init];
if (leaderboardController != NULL)
{
leaderboardController.category = kLeaderboardID;
leaderboardController.timeScope = GKLeaderboardTimeScopeWeek;
leaderboardController.leaderboardDelegate = self;
[[CCDirector sharedDirector] presentViewController:leaderboardController animated:YES completion:nil];
}