1

ゲーム ビューに GKMatchmakerViewController を表示しようとすると問題が発生します。

通常、2 人の対戦相手を自動マッチングすることにより、プログラムでマルチプレイヤー マッチを作成しますが、これは正常に機能します。

しかし、標準の Game Center マッチメイキング ビューを表示しようとすると、ゲーム ビューが閉じられ、メニューに戻ります。

メニュー ビュー -> ゲーム ビュー。

問題は、私のメニュー ビューがメイン ビューとして機能し、Game Center ビューが表示されると他のすべてのビューが削除されることだと思います (一度に 1 つのビュー コントローラーしか表示できないため)。

ビュー階層の設定が間違っていますか? Game Center ビューを表示するときに、Game View が閉じられないようにするにはどうすればよいですか?

編集 - GKMatchMakerViewController を呼び出すコードで更新

Game Center マッチメイキング コントローラーを表示したいときに呼び出されるメソッドを持つ GameviewController

  - (void)presentCustomVSBattle {

    ourRandom = arc4random();
    [self setGameState:kGameStateWaitingForMatch];

   AppDelegate * delegate = (AppDelegate *) [UIApplication sharedApplication].delegate;


    [[GCHelper sharedInstance] findCustomMatchWithMinPlayers:2 maxPlayers:2 viewController:delegate.viewController delegate:self];
}

// このメソッドは GCHelper.m で呼び出されます

 - (void)findCustomMatchWithMinPlayers:(int)minPlayers maxPlayers:(int)maxPlayers viewController:(UIViewController *)viewController delegate:(id<GCHelperDelegate>)theDelegate {

if (!gameCenterAvailable) return;

matchStarted = NO;
self.match = nil;
self.presentingViewController = viewController;
delegate = theDelegate;

if (pendingInvite != nil) {

    [presentingViewController dismissModalViewControllerAnimated:NO];
    GKMatchmakerViewController *mmvc = [[[GKMatchmakerViewController alloc] initWithInvite:pendingInvite] autorelease];
    mmvc.matchmakerDelegate = self;
      [presentingViewController presentViewController:mmvc animated:YES completion:nil];

    self.pendingInvite = nil;
    self.pendingPlayersToInvite = nil;
    } 
else {

        [presentingViewController dismissModalViewControllerAnimated:NO];
        GKMatchRequest *request = [[[GKMatchRequest alloc] init] autorelease];
        request.minPlayers = minPlayers;
        request.maxPlayers = maxPlayers;
        request.playersToInvite = pendingPlayersToInvite;

        GKMatchmakerViewController *mmvc = [[[GKMatchmakerViewController alloc] initWithMatchRequest:request] autorelease];
        mmvc.matchmakerDelegate = self;

         [presentingViewController presentViewController:mmvc animated:YES completion:nil];

        self.pendingInvite = nil;
        self.pendingPlayersToInvite = nil;

    }

} 
4

1 に答える 1

1

あなたの場合、dismissView Controllerの呼び出しは不要に見えます。それらを取り除いてみてください:)

于 2013-01-15T12:29:41.837 に答える