关于iPhone:显示游戏中心GKMatchmakerViewController关闭其他视图

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调用看起来不必要,请尝试摆脱它们:)