私の問題を次のように示します。ViewController と GCManage の 2 つのクラスを持つプロジェクトがあります。
ViewController は のサブクラスでUIViewController
あり、 の GCManage ですNSObject
。
ViewController でボタンを押すと、次のメソッドが呼び出されます。
-(IBAction)showLeaderboards:(id)sender{
GCManage *manageGC = [[GCManage alloc] init];
if (manageGC.isGCenabled == YES){
GKGameCenterViewController *gameCenterController = [[GKGameCenterViewController alloc] init];
if (gameCenterController != nil)
{
gameCenterController.gameCenterDelegate = manageGC;
gameCenterController.viewState = GKGameCenterViewControllerStateLeaderboards;
[self presentViewController:gameCenterController animated:YES completion:nil];
}
}
}
この例では、isGCenabled = YES
.
現在、GCManage インターフェイスは
@interface GCManage : NSObject <GKGameCenterControllerDelegate>
(h ファイルの最初の行)。
実装しました
- (void)gameCenterViewControllerDidFinish:(GKGameCenterViewController *)gameCenterViewController
{
[gameCenterViewController.presentingViewController dismissViewControllerAnimated:YES completion:^(void){}];
[gameCenterViewController.presentedViewController dismissViewControllerAnimated:YES completion:^(void){}];
[gameCenterViewController dismissViewControllerAnimated:YES completion:^(void){}];
NSLog(@"Ran");
}
GCManage にありますが、どのような場合でも呼び出されないようです。
ViewController がデリゲートであり、実装されている場合
- (void)gameCenterViewControllerDidFinish:(GKGameCenterViewController *)gameCenterViewController
{
[gameCenterViewController.presentingViewController dismissViewControllerAnimated:YES completion:^(void){}];
NSLog(@"Ran");
}
それは問題なく動作します。ここで何が起こっているのですか?