0

私の問題を次のように示します。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");
}

それは問題なく動作します。ここで何が起こっているのですか?

4

1 に答える 1