【问题标题】:Attempt to present GameViewController on ViewController which is waiting for a delayed presention of <GKTurnVC> to complete尝试在等待 <GKTurnVC> 的延迟呈现完成的 ViewController 上呈现 GameViewController
【发布时间】:2015-03-21 15:03:16
【问题描述】:

因此,在我的回合制 iOS 游戏中,当我单击“查找游戏”时,它会将我带到正确的视图控制器,而不是当前加入的游戏,例如因此,如果是 Naughts and Crosses,我会被带到游戏板上,但实际上不能轮到我,因为它把我带到了模板,而不是当前加入的游戏。我相信这是由于调试日志中的原因:

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];

【问题讨论】:

    标签: ios objective-c game-center modalviewcontroller


    【解决方案1】:

    在呈现视图控制器时,您必须小心在开始另一个之前完成了一个。如果您认为可能存在重叠,最好的方法是使用完成处理程序,如下所示:

    [controller1 dismissViewControllerAnimated:YES completion:^{
    
        [self presentViewController:controller2 animated:YES completion:NULL];
    
    }];
    

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

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

    【讨论】:

    • 我不明白这里的下一个控制器?我没有要展示的其他控制器,只有当前的(已加入游戏)。
    • 在您的代码中,您似乎正在关闭视图控制器,然后尝试在刚刚关闭的视图控制器上执行 segue。尝试省略[presentingViewController dismissViewControllerAnimated:YES completion:nil];这一行。
    • 当我这样做时没有任何反应。日志详情:Attempt to present &lt;GameViewController: 0x79a9d600&gt; on &lt;ViewController: 0x797315a0&gt; which is waiting for a delayed presention of &lt;GKTurnBasedMatchmakerViewController: 0x7bbc8000&gt; to complete Warning: Attempt to present &lt;GameViewController: 0x79685190&gt; on &lt;ViewController: 0x797315a0&gt; which is already presenting (null) Entering new game...
    • 问题是您试图一次呈现/关闭多个视图控制器。您提供的 3 行代码表明 1)您不会等到一个演示文稿完成后再开始另一个演示文稿,以及 2)您尝试在不再位于层次结构中的其他视图控制器上呈现视图控制器。从你在这里给出的内容中我不能说更多。
    • 我已经搜索了我的代码,但找不到任何会导致问题的东西。但是,我确实通过注释掉一行来解决我的后退按钮问题。然而,这又产生了另一个问题,当点击 Find Game 时,它​​不会显示配对屏幕,而是直接进入游戏模板。有问题的代码:[presentingViewController presentViewController:mmvc animated:YES completion:nil];
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-20
    • 2015-04-21
    • 2016-11-29
    • 2021-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多