【问题标题】:Embedding an existing UINavigationController to new view controllers将现有的 UINavigationController 嵌入到新的视图控制器中
【发布时间】:2012-04-29 08:57:45
【问题描述】:

假设我有一个带有导航控制器和几个视图控制器的故事板。

一切都很好,直到我尝试添加一个新的视图控制器并希望将它与现有的UINavigationController 关联起来。当我转到编辑器>嵌入>导航控制器时,Xcode 会帮助创建一个新控制器,这正是我不想要的。当我尝试拖动以创建线框时,我创建了一个转场关系,这也是我不想要的。

有没有办法让新的视图控制器与现有的导航控制器配合得很好?

【问题讨论】:

  • 如果不通过 push segue,您的新视图控制器将如何关联到您的导航控制器?
  • 不应该有另一个关联吗?当我嵌入一个新的导航控制器时,Xcode 不会创建推送序列,而是创建不同类型的有线连接
  • 另外,当我只创建一个 push segue 时,视图控制器的高度不会在运行时调整,并且导航控制器的导航栏会遮挡视图的最顶部。我注意到项目中的视图最初不会受到这种影响,只有稍后添加的视图通过 push segue 连接到导航控制器。
  • 你是对的,Nav Controller 和第一个 ViewController 之间的连接不是 push segue,它是 nav controller 和它的根 ViewController 之间存在的一种特殊关系。当使用 push segue 将另一个控制器推送到导航堆栈上时,您可以通过适当地设置 autoresizingMask 属性来让控制器的视图和子视图调整到较短的高度。但是,听起来您正在寻找的可能是模态转场?

标签: ios ios5 uinavigationcontroller storyboard uistoryboard


【解决方案1】:

我认为您对 UINavigationController 的看法不正确。 UINavigationController 只是一个容器视图控制器,用于管理视图控制器的层次结构。你从一个 UINavigationController 开始,它只有一个根视图控制器(听起来你想要多个,这不会发生)。当你推送一个新的视图控制器时,它会被推送到同一个 UINavigationController 上。因此,如果您希望多个视图控制器与单个 UINavigationController 关联,它们必须分层堆叠到根视图控制器上。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-22
    • 2014-06-13
    • 2014-05-06
    • 2013-10-15
    • 1970-01-01
    • 1970-01-01
    • 2014-05-23
    • 1970-01-01
    相关资源
    最近更新 更多