ゲーム ビューに 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;
}
}