这是我的代码:
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
是一个空字符串。
答案 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。