将Action Segue从按钮推送到UIViewController

时间:2018-02-28 16:20:18

标签: ios swift segue

我是iOS应用开发的新手,目前面临从UIButton到UIViewController的一些问题。我在Main.storyboard上面做过:

  • 选择UIButton
  • 按住“control”并拖动到UIViewController
  • 在Action Segue下选择“推送”

运行后,我得到以下错误

*** 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.'

需要帮助解决上述错误。如果解决方案附带截图,我会很感激,因为我是新手。谢谢!

实施@technerd解决方案后,它仍然无效。以下是导航控制器菜单和动作搜索菜单

的图像

enter image description here

enter image description here

3 个答案:

答案 0 :(得分:2)

从错误日志中看,您的故事板中没有嵌入UINavigationController作为初始控制器。

首先将UINavigationController设置为初始控制器。 因为pushpop操作仅在有可用的导航堆栈时执行。

  1. 根据屏幕截图选择故事板中的第一个ViewController。
  2. 然后编辑 - > EmbedIn - > NavigationController
  3. 要了解导航堆栈的工作原理,请完成此link

    enter image description here

    将Navigation设置为InitialViewController后,将第一个想要显示的视图控制器设置为该导航控制器的rootViewController。

    enter image description here

    然后你可以将push从按钮拖到secondViewController,从firstViewController推送到secondViewController。

    enter image description here

    您可以在屏幕截图中看到Push(Deprecated),因此您必须使用Show关系。 Show也执行与Push相同的操作。

    更新:

    根据您的问题更新,您面临的是您无法显示其他动作搜索。按照以下步骤使其可用。

    1. 在故事板中选择导航控制器。
    2. 在右侧面板的Use Trait Variations下启用Interface Builder Document选项。
    3. enter image description here

      有关详细信息,请查看此thread

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

Push segues仅在UINavigationController类型中可用。 尝试添加UINavigationController。 一个简单的方法是:

enter image description here