所以在我的回合制iOS游戏中点击"查找游戏"它带我到正确的视图控制器,而不是当前游戏加入,例如所以,如果是淘气和十字架,我被带到了比赛板但是,实际上不能轮到我,因为它把我带到模板而不是当前的比赛加入。我相信这是在调试日志中的原因:
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];
答案 0 :(得分:0)
在呈现视图控制器时,您必须要小心,在启动另一个之前已完成视图控制器。如果您认为可能存在重叠,那么执行此操作的最佳方法是使用完成处理程序,如下所示:
[controller1 dismissViewControllerAnimated:YES completion:^{
[self presentViewController:controller2 animated:YES completion:NULL];
}];
上面的代码解散了第一个可见的视图控制器(例如UIAlertController
),并在完成时呈现了一个新的视图控制器。
当您遇到这种情况时,可能会出现加载动画,也许您已经提交了一个UIAlertController
通知用户正在进行冗长的任务。任务完成后,您要关闭UIAlertController
并显示新的自定义视图控制器。必须在完成处理程序中显示此自定义视图控制器。 见上文。