在点击按钮时按下导航控制器

Posted

技术标签:

【中文标题】在点击按钮时按下导航控制器【英文标题】:Pushing a navigation controller on tapping a button 【发布时间】:2014-12-22 20:43:32 【问题描述】:

在我的 Swift 应用程序中,我有一个导航控制器,其中有一个表格视图控制器,其中包含一个“组”列表。我在顶部导航栏上有一个按钮,应该添加一个新的“组”。在点击按钮时,我需要设置一个视图控制器来添加一个新的“组”,以便在这个新视图的导航栏中使用标题为“组”的后退按钮从右侧滑入。

我尝试将导航视图控制器嵌入到我的“新组”视图控制器中,然后使用推送转场在“组”视图控制器的导航栏中的栏按钮项内进行触摸转换。 “不支持推送导航控制器”会导致此错误

我怎样才能最好地实现这种行为?

【问题讨论】:

【参考方案1】:

一旦您的第一个视图控制器嵌入到导航控制器中,您就不必将后续视图控制器嵌入到它们自己的导航控制器中 - 您只需将它们推送到现有导航层次结构的上下文中。

因此,您可以从“新组”场景中移除导航控制器,然后通过按钮直接向新场景建立“推送”转场(尽管这已被弃用且 ios8 中首选“显示”转场)。

【讨论】:

我也预料到了,但是当我右键单击并从按钮拖动到我的新组控制器时,它是一个表格视图控制器,虽然它表明已经建立了一个 push segue,点击按钮什么都不做。这是它的样子:copy.com/rEXe0NxbphrMGREi 为什么你的groups表链接到另一个table view controller?不会直接进入新群场景吗?还是我可以看到的其他新组场景没有使用。我无法从您的屏幕截图中看到,- 如果您选择 + 按钮,检查器中显示的“触发的转场”是什么? 是的,那是一个未使用的控制器。我不知道之前发生了什么,但我删除了按钮并再次尝试,并且成功了。谢谢!【参考方案2】:

如果您已经有一个导航控制器,您可能不想创建一个新的。

相反,从当前视图控制器调用[self.navigation controller pushViewController:animated:] 传递新的“创建组”视图控制器的实例。如果您设置了该视图控制器的title 属性,它将显示在导航栏中。

【讨论】:

以上是关于在点击按钮时按下导航控制器的主要内容,如果未能解决你的问题,请参考以下文章

按下“更多”按钮时,如何在标签栏控制器内设置导航栏颜色和单元格大小?

如何检测在导航控制器的下一个视图控制器中按下后退按钮

按下导航控制器左栏按钮时如何停止视图消失

我想在 UIView 类中按下按钮时触发导航控制器

使用导航控制器按下后退按钮后如何防止前一个片段显示?

UINavigationBar 按钮,根据点击改变 IBAction