故事板 - 弹出到视图控制器然后推送导致多次推送

Posted

技术标签:

【中文标题】故事板 - 弹出到视图控制器然后推送导致多次推送【英文标题】:Storyboard - Popping to a View Controller then Pushing Causes multiple pushes 【发布时间】:2014-12-01 19:21:52 【问题描述】:

在目标 C/ios 中;

我们有一个类似的流程(在 xcode 故事板中设置);

菜单视图控制器 -> 输入代码 -> 处理/验证 -> 显示失败的代码页面 em>

(->) 箭头表示情节提要中的push segue 设置

当处于失败状态时,我想弹出到Enter in a code 视图控制器。

 UIViewController *vc = nil;

    NSUInteger index=0;
    for (UIViewController *viewController in self.navigationController.viewControllers) 
        if ([viewController isKindOfClass:[SomeViewController class]]) 
            vc = viewController;
            break;
        
        index++;
    

    if (vc) 
        dispatch_async(dispatch_get_main_queue(), ^(void) 
            [self.navigationController popToViewController:vc animated:YES];
        );
        return;
    

这让我回到了我想去的 VC。

除了现在我在 Enter code 页面上按下提交时,它会再执行 3 或 4 次“推送”,而它应该只有 1 次。

我需要解除转场吗?我尝试清空导航视图控制器堆栈,甚至尝试删除它的最后一个活动视图控制器——这两个都返回一个空白或黑色的窗口视图框架。

为什么在导航堆栈中弹出视图控制器会影响我的视图控制器中的 segues,以至于每当我尝试执行 push segue 操作时,它会尝试将多个视图控制器推送到堆栈上?

【问题讨论】:

这 3 或 4 次推送又推送到了哪里?如果在这些多次推送之后记录导航控制器的 viewControllers 数组,它会显示什么? 解决了这个问题。原来我在情节提要中有一个按钮进行推送,然后我的代码中有另一个推送序列 【参考方案1】:

原来我遇到了以下问题

按钮按下会导致情节提要中的 segue 动作 我在按钮上的代码中执行了相同的 segue 操作,因此多次按下

我现在已经解决了这个问题

【讨论】:

以上是关于故事板 - 弹出到视图控制器然后推送导致多次推送的主要内容,如果未能解决你的问题,请参考以下文章

为啥使用故事板推送视图控制器显示黑屏

SWRevealViewController - 推送下一个视图控制器故事板

故事板无需单击按钮即可应用推送(模态,推送,自定义)

将子视图推送和弹出到堆栈的问题

如何在没有动画的情况下弹出到视图控制器

如何从视图控制器推送 xib