【问题标题】:NSGenericException', reason: 'Push segues can only be used when the source controller is managed by an instance of UINavigationControllerNSGenericException', reason: '只有在源控制器由 UINavigationController 的实例管理时才能使用推送 segues
【发布时间】:2012-11-12 19:47:10
【问题描述】:

所以我正在制作一个带有 5 个视图控制器的应用程序,第一个嵌入在 UINavigationController 中,前 4 个视图控制器之间的 segue 工作正常。然而,引入第 5 个视图控制器打破了这一点,我得到了错误

Terminating app due to uncaught exception 'NSGenericException', reason: 'Push segues can only be used when the source controller is managed by an instance of UINavigationController.'

我没有对第 5 个视图控制器做任何不同的事情,它只是一个带有图像视图和标签的标准 ViewController,我所有的 segues 都是由故事板中的 ctrl 拖动按钮调用的。有人知道是什么原因造成的吗?

谢谢

【问题讨论】:

    标签: iphone ios uinavigationcontroller segue


    【解决方案1】:

    如果你使用的是 UIViewController 类

    然后检查 segue 标识符声明中的一件事 比如你设置了

    标识符:MySegue1 Segue:Present Modally(如果您使用 UIViewController 类,请选择此项)

    演示:默认 过渡:默认

    再检查你的物体减速是否正确

    也许我的回答并不完全正确,但这就是我所知道的关于这个错误的所有信息。 希望对你有所帮助。

    【讨论】:

      【解决方案2】:

      在我的特定情况下,调用需要推送的视图子集的位置仅来自代码,并且无法通过 IB 连接。创建视图子集的原始项目是使用专用按钮启动的,因此是 IB'able。

      没有可配置的 segue,因此任何推送都会导致此错误。

      我的解决方案很简单: [self showViewController:targetViewController 发送者:self];

      【讨论】:

        【解决方案3】:

        我遇到了和你一样的问题。

        我的问题是我调用了一个 segue 的标识符,该标识符在我调用 segue 的类中无法访问。我通过直接从可以访问我正在使用的类的 ViewController 的视图中添加另一个 segue 来解决它。希望这会有所帮助。

        【讨论】:

          【解决方案4】:

          在我的情况下,在原始 VC 执行 segue 时,导航控制器正在转换并且已经改变了他可见的 VC。

          我通过这样做解决了它:

          if (self.navigationController.visibleViewController == self) {
              [self performSegueWithIdentifier:@"thankyou" sender:self];
          }
          

          不再崩溃。 :)

          【讨论】:

          • 它可以工作.. 在通过 nsnotifications 触发 segue 时更有用。
          • 很好的答案。通过通知触发时也帮助了我
          【解决方案5】:

          我遇到了同样的问题,我搜索了很多,但没有什么可以帮助我。我尝试了很多方法。最后我找到了解决方案。 我正在 xcode 5 中做一个项目,并使用故事板开发视图。 我有 3 个屏幕,我的连接是..

          view1 到 view2-->推送

          view2 到 view3-->推送

          view2 to view1-->modal(这是我的错误,我们只需要使用推送)

          这很好,但我在 view2 中放置了 bar button item(Back) 并且 segue connection 是 modal 。当我单击 view2 栏按钮时,它会正确重定向到 view1,但是当我尝试从 view1 转到 view2 时,我得到了同样的错误。 因为如果您将推送 segue 类型从源视图提供给目标视图,您需要使用相同的推送 segue 从目标视图到源视图..

          我希望它对某人有所帮助..谢谢

          【讨论】:

            【解决方案6】:

            几分钟后我遇到了同样的问题,我可以解决它。

            我已经删除了 segue 连接,并且我再次从一个视图连接到其他视图。这样问题就解决了。 问题是我已经删除了视图,并且我对故事板场景中的视图进行了一些更改。 重要的是您需要检查从一个视图到另一个视图的连接是否正常工作。

            这可能对我希望的人有所帮助....

            【讨论】:

              【解决方案7】:

              如果您的应用程序将导航控制器作为窗口的根视图控制器,请选择故事板文件,然后选择相应的导航控制器,在 Simulated Metrics 中选择 Is Initial View Controller 复选框。这对我有用。希望这会有所帮助。

              【讨论】:

                【解决方案8】:

                将导航控制器添加到您的初始视图

                1. 选择初始视图
                2. 转到编辑器--> 嵌入 --> 导航控制器。

                【讨论】:

                • 可能是因为 OP 非常清楚地表明他已经将所有视图控制器都嵌入在 UINavigationController 中。我在我的项目中遇到了完全相同的问题。视图控制器绝对嵌入在 UINavigationController 中,导航栏中的 < Back 按钮很明显。
                • 太棒了。简单的答案,为我节省了很多时间并解决了一个障碍。 +1
                • 我遇到了这个问题,因为我在“push”segue 之前有一个“modal”segue。将第一个更改为“推送”并解决了问题。
                【解决方案9】:

                您只需将导航控制器嵌入到您的源视图控制器中(一个初始视图,而不是您正在推动的视图)。这可以通过选择 Source View Controller 和 Go To Editor--> Embed In --> Navigation Controller 来完成。

                如果你认为Navigation Controller已经做了Navigation Bar。只需选择 Navigation Controller ,在“Show the Attributes Inspector”中禁用 Shows Navigation Bar。

                【讨论】:

                  【解决方案10】:

                  这很可能是因为您从按钮或任何指向视图控制器而不是您的视图控制器继承的导航视图控制器的按钮中进行了推送。因此,您必须将 segue 指向导航控制器。

                  希望这会有所帮助。

                  【讨论】:

                    【解决方案11】:

                    将 UINavigationcontroller 设置为 StoryBoard 中的初始视图控制器(初始场景)。

                    【讨论】:

                      猜你喜欢
                      • 2015-11-10
                      • 1970-01-01
                      • 2018-07-27
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 2014-12-07
                      • 1970-01-01
                      相关资源
                      最近更新 更多