GKScore challengeComposeControllerWithPlayers未显示视图

时间:2014-05-30 14:11:34

标签: ios7 game-center

这是我的代码:

GKScore *scoreObj = [[[GKScore alloc] initWithCategory:category] autorelease];
scoreObj.value = playerScore;

[scoreObj 
    challengeComposeControllerWithPlayers:playerIDs 
                                  message:msg
                        completionHandler:^(UIViewController *composeController,
                                            BOOL didIssueChallenge, 
                                            NSArray *sentPlayerIDs) {
                // I don't really care what you do
            }];

当我运行代码时,我根本没有覆盖,并且日志中没有错误消息。

目前,playerIDs是一个空的NSMutableArray。我不知道这是否相关,但我不想预先填充一个列表 - 这就是本机用户界面为我做的事情,对吧? mgs是一个空字符串。

1 个答案:

答案 0 :(得分:1)

首先在iOS 7中initWithCategory:已被弃用。请改用initWithLeaderboardIdentifier:。正如文档所说:

  

使用预先选择的播放器标识符和预先格式化的播放器可编辑消息,为视图控制器提供挑战。

因此保存一个指向此视图控制器的指针,从当前视图控制器中显示它并从完成处理程序中将其关闭。

假设您在当前viewController的实现范围内,请执行以下操作:

GKScore *scoreObj = [[[GKScore alloc] initWithLeaderboardIdentifier:category] autorelease];
scoreObj.value = playerScore;

UIViewController *vc = [scoreObj  challengeComposeControllerWithPlayers:playerIDs 
                                  message:msg
                        completionHandler:^(UIViewController *composeController,
                                            BOOL didIssueChallenge, 
                                            NSArray *sentPlayerIDs) {
   [composeController.presentingViewController dismissViewControllerAnimated: YES completion: nil];
                // I don't really care what you do
            }];
[self presentViewController: vc animated: YES completion: nil];

这应该按预期显示viewController。