我这样称呼领导委员会:
-(void)viewscores:(SPEvent*)event
{
GKLeaderboardViewController *leaderboardController = [[GKLeaderboardViewController alloc] init];
if (leaderboardController != nil) {
leaderboardController.leaderboardDelegate = self;
UIWindow* window = [UIApplication sharedApplication].keyWindow;
[window addSubview: self.rootViewController];
[self presentModalViewController: leaderboardController animated: YES];
}
}
当我点击排行榜按钮时,收到错误:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+[UIViewController presentModalViewController:animated:]: unrecognized selector sent to class 0x3e2fc7f8'
这是正常的吗?
答案 0 :(得分:2)
您应该在viewController中调用该函数。在我的一个应用程序中,代码如下所示:
-(IBAction)showLeaderBoard {
GKLeaderboardViewController *leaderBoardCont = [[GKLeaderboardViewController alloc] init];
if (leaderBoardCont) {
leaderBoardCont.category=@"1S";
leaderBoardCont.timeScope=GKLeaderboardTimeScopeWeek;
leaderBoardCont.leaderboardDelegate=self;
[self presentModalViewController:leaderBoardCont animated:YES];
}
}
然后你还应该实现委托方法:
-(void) leaderboardViewControllerDidFinish:(GKLeaderboardViewController *)viewController {
[self dismissModalViewControllerAnimated:YES];
viewController = nil;
}
此处1S是您在iTunes Connect中创建的排行榜的标识符。希望这会有所帮助。
编辑:由于您仍然遇到问题,请查看这些教程。它们涵盖了关于排行榜和成就的所有内容。
答案 1 :(得分:0)
您正在将presentModalViewController
消息发送给无法识别它的对象。因此,您在“Game.m”文件中编写的类不会继承自UIViewController
。不知道你正在使用什么框架,但你必须初始化一个UIViewController
实例来显示GameCenter视图。