0

我这样称呼排行榜:

-(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'

这是正常的吗?

4

2 回答 2

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 中创建的排行榜的标识符。希望这可以帮助。

编辑:由于您仍然遇到问题,请查看这些教程。它们涵盖了有关排行榜和成就的所有内容。

第一部分

第二部分

于 2012-05-02T22:58:37.837 回答
0

您将presentModalViewController消息发送到无法识别的对象。因此,您在“Game.m”文件中编写的类不会继承自UIViewController. 不知道您使用的是什么框架,但您必须初始化一个UIViewController实例才能显示 GameCenter 视图。

于 2015-12-11T15:53:51.360 回答