UINavigationController上的swift菜单项在打开segue时消失[关闭]

Posted

技术标签:

【中文标题】UINavigationController上的swift菜单项在打开segue时消失[关闭]【英文标题】:swift Menu item on UINavigationController is disappearing when open segue [closed] 【发布时间】:2016-08-25 21:44:29 【问题描述】:

我有一个带有 2 个按钮(菜单项)的 UINavigationController。当我打开 segue 并移至详细视图时,按钮消失了——只出现了后退按钮。

我需要将菜单项保留在左侧:

【问题讨论】:

试试 self.navigationItem.hidesBackButton = true 我试过不行 介意分享一些代码吗? 【参考方案1】:

我有带有 2 个按钮的 UINavigationController

不,你没有。导航控制器导航栏中的按钮属于该导航控制器的当前子视图控制器。特别是它们属于它的navigationItem

所以你有一个带有两个按钮的视图控制器。

您还有另一个视图控制器(详细视图控制器)没有这两个按钮。

所以...如果您希望这些按钮出现在详细视图控制器中,请将这些按钮也提供给详细视图控制器!

更好的架构是将“永久按钮”放在工具栏而不是导航栏。但是您仍然需要让这些是 both 视图控制器的 toolbarItem 按钮。

【讨论】:

你能告诉我更多关于如何在细节视图上添加按钮的细节 与在主视图中添加它们的方式相同【参考方案2】:

这是 UINavigationController 的常见行为,因为它与它刚刚显示的视图控制器有关

永远不要期望 UINavigationBar 有一个含义,例如web主菜单有。想象一下 NavigationBar,带有 BarButtonItems 的 NavigationItem 的行为总是与情况相关,即实际显示的视图。

导航这个词代表的是从这里导航到某个地方的能力,而不是作为应用程序 UI 的一些导航工具。

您应该将后退按钮留在原处的原因:用户应该知道,他正在查看详细信息。而这对于 Apple 产品的理念非常重要——直观。这就是为什么 Apple 设备从来没有硬件后退按钮的原因。这是应用程序中最常用的约定,所以如果你想访问主菜单,你首先需要从细节中恢复。

我不建议打破这些实际规则。

【讨论】:

那么我们如何保留菜单项

以上是关于UINavigationController上的swift菜单项在打开segue时消失[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

UINavigationController 上的后退按钮

如何防止 UINavigationController 更改 pushViewController 上的后退按钮:

如何检测 UINavigationController 工具栏背景上的触摸

UINavigationController上的swift菜单项在打开segue时消失[关闭]

检测UINavigationController上的后退按钮触摸

如何在 iOS 7 上的 UINavigationController 中禁用向后滑动手势