尝试在ViewController上呈现GameViewController,等待延迟呈现<gkturnvc>以完成</gkturnvc>

时间:2015-03-21 15:03:16

标签: ios objective-c game-center modalviewcontroller

所以在我的回合制iOS游戏中点击&#34;查找游戏&#34;它带我到正确的视图控制器,而不是当前游戏加入,例如所以,如果是淘气和十字架,我被带到了比赛板但是,实际上不能轮到我,因为它把我带到模板而不是当前的比赛加入。我相信这是在调试日志中的原因:

Attempt to present <GameViewController: 0x790cb030> on <ViewController: 0x790bfe80> which is waiting for a delayed presention of <GKTurnBasedMatchmakerViewController: 0x7a88de00> to complete

Warning: Attempt to dismiss from view controller <GameNavigationController: 0x790bfb20> while a presentation or dismiss is in progress!

第二行是当我尝试使用后退按钮时,它会将我带回主菜单,然后快速返回到GameViewController。

我认为更改以下代码将解决此问题,我只是不知道如何。非常感谢任何帮助,谢谢!

- (void)turnBasedMatchmakerViewController:(GKTurnBasedMatchmakerViewController *)viewController didFindMatch:(GKTurnBasedMatch *)match
{
    [presentingViewController dismissViewControllerAnimated:YES completion:nil];
    [presentingViewController performSegueWithIdentifier:@"GamePlayScene" sender:match];


 [self dismissModalViewController];

1 个答案:

答案 0 :(得分:0)

在呈现视图控制器时,您必须要小心,在启动另一个之前已完成视图控制器。如果您认为可能存在重叠,那么执行此操作的最佳方法是使用完成处理程序,如下所示:

[controller1 dismissViewControllerAnimated:YES completion:^{

    [self presentViewController:controller2 animated:YES completion:NULL];

}];

上面的代码解散了第一个可见的视图控制器(例如UIAlertController),并在完成时呈现了一个新的视图控制器。

当您遇到这种情况时,可能会出现加载动画,也许您已经提交了一个UIAlertController通知用户正在进行冗长的任务。任务完成后,您要关闭UIAlertController并显示新的自定义视图控制器。必须在完成处理程序中显示此自定义视图控制器。 见上文