アプリにGameCenterを実装していますが、iOS6でleaderboardCategoryプロパティを読み込もうとして問題が発生しています。
これが私がGKGameCenterViewControllerを提示する方法です:
GKGameCenterViewController *gcViewController = [[GKGameCenterViewController alloc]init];
[gcViewController setLeaderboardCategory:currentLeaderboard];
[gcViewController setGameCenterDelegate:self];
[self presentViewController:gcViewController animated:YES completion:NULL];
[gcViewController release];
次に、デリゲートが呼び出されたときに、leaderboardCategoryプロパティが何を示しているかを確認します。
-(void)gameCenterViewControllerDidFinish:(GKGameCenterViewController *)gameCenterViewController{
NSLog(@"%@", gameCenterViewController.leaderboardCategory);
}
問題は、却下する前にどのリーダーボードに切り替えても、最初に渡したリーダーボードが常に表示されることです。
Appleのドキュメントによると:
リーダーボードが表示されるとき、このプロパティの値によって、プレーヤーに表示されるリーダーボードのコンテンツが決まります。プレーヤーが表示するリーダーボードコンテンツを変更すると、leaderboardCategoryプロパティが自動的に更新されます。たとえば、プレーヤーの選択を保持するために、画面が閉じられた後にleaderboardCategoryプロパティを読み取り、次にViewControllerを初期化するときにその値を設定できます。
ここで、GKLeaderboardViewControllerも使用してみましたが、成功しませんでした。ただし、iOS 5でGKLeaderboardViewControllerを使用すると(GKGameCenterViewControllerはiOS 6より前では使用できません)、Appleのドキュメントが示すように「category」プロパティが更新されます。
私は何が欠けていますか?