Displaying Game Center GKMatchmakerViewController dismisses other view
尝试在游戏视图上显示GKMatchmakerViewController时出现问题。
通常我会通过自动匹配2个对手来编程创建多人游戏,效果很好。
但是当我尝试显示标准的Game Center对接会视图时,它会关闭我的游戏视图,并将我推回菜单。
菜单视图->游戏视图。
我认为问题可能是我的菜单视图充当了我的主视图,并且在显示"游戏中心"视图时删除了所有其他视图(因为此时只能显示一个视图控制器)。
我设置视图层次结构错误吗?在显示"游戏中心"视图时,应该如何做才能使我的"游戏视图"不被关闭?
编辑-使用调用GKMatchMakerViewController的代码进行更新
GameviewController,当我想显示Game Center匹配控制器时调用的方法
1 2 3 4 5 6 7 8 9 10 | - (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
中调用此方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | - (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; } } |
在您的情况下,dismissView Controller调用看起来不必要,请尝试摆脱它们:)