从popover segue推送segue不起作用

时间:2017-09-21 11:07:59

标签: ios swift

我有一个tableViewController,它作为popover分割到另一个tableViewController,它运行良好。但是当我尝试将第二个tableViewController中的show(例如push)转换为第三个tableViewController时,它不起作用,因为第三个tableViewController从下到上滑动,而不是从右到左滑动,所以它是popover的。

我在Calendar应用程序中看到了这个,创建新事件是popover segue(从下到上滑动),Travel time cell从右到左分段,但我似乎无法做到。< / p>

如果答案是在代码中,我真的很感激,如果它是Swift

Screenshot of the app layout - img

1 个答案:

答案 0 :(得分:0)

您需要确保第二个表格视图控制器嵌入在导航控制器中,以便push segue正常工作。

否则,正如您所看到的,它将转移到您的第三个表视图控制器,但Xcode将使用默认值并最终以模态方式呈现您的控制器。

要将视图控制器嵌入到自己的导航控制器中,选择第二个视图控制器,请选择编辑器&gt;嵌入&gt;导航控制器。就是这样。

更新:感谢您添加屏幕截图,我在这里已经看到了一个问题。你不是第三个导航控制器,实际上你应该添加它,因为它是你问题的原因。其背后的原因是,控制器3将被自然地推入堆栈,因为控制器2已经嵌入在其自己的导航控制器中。为了说明我要解释的内容,这是一个工作示例,向您展示它应该是什么样子:

enter image description here

  • 如您所见,Controller 1嵌入在自己的导航控制器中,因此它可以拥有自己的导航栏。
  • 现在,您想要模拟您的Controller 2,并且由于您希望Controller 2也有一个导航栏,那么您也需要嵌入自己的导航控制器,因为Modal Segue只是一个视图控制器呈现另一个模态控制器视图控制器没有免费提供导航栏(在此理解,在Modal Segue的情况下,你的控制器2不会被添加到堆栈中)
  • 最后,你可以从Controller 2到Controller 3创建一个Push Segue,Controller 3自然会被添加到堆栈中(Controller 2是导航控制器的根控制器),创建你正在寻找的推送转换

如果您有任何问题,请告诉我,我很乐意帮助