如何在 Swift iOS 中仅在最后一个屏幕上获取导航栏?

Posted

技术标签:

【中文标题】如何在 Swift iOS 中仅在最后一个屏幕上获取导航栏?【英文标题】:How do I get Navigation bar on only the last screen in Swift iOS? 【发布时间】:2016-09-19 17:18:37 【问题描述】:

如果我总共有 6 个屏幕,并且我想在最后两个场景之间添加一个导航控制器,因此我的最终屏幕有一个导航栏/通过导航控制器进行导航,有没有简单的方法可以做到这一点?

我尝试将导航控制器嵌入到我的第一个场景中,并将我的 segues 切换为“显示”,并在出现时将 navigationbar.isHidden 设置为 true,然后在最后一个屏幕上尝试在 viewdidappear 中将其设置为 false,然后再设置为在 viewdiddissapear 中再次为 true。

首先它不起作用,(我可能只需要修补它),但其次,为了在两个屏幕之间导航似乎需要做很多“工作”。

您是否必须在整个项目中进行导航才能在两个特定屏幕之间进行导航?最好的方法是什么?

【问题讨论】:

【参考方案1】:

如果你有故事板,你应该能够选择倒数第二个屏幕并使用编辑器->嵌入->导航控制器菜单项。

【讨论】:

我觉得我昨晚已经尝试了一百次,而今天这就像一个魅力。谢谢!这比在整个项目中导航并隐藏栏要简单得多。 我确实有一个问题。所以我在我的屏幕之间传递变量以准备 segue,当嵌入导航控制器时,我得到一个错误,destinationVC 不再是我分配的那个,现在它是导航控制器,这是有意义的。有没有一种流畅的方法来保持这个导航控制器正在播放的变量传递?或者,有什么方法可以将导航栏强制到完全没有导航控制的视图上?我正在使用 JSQMessages,只需要离开屏幕。 我没有快速的解决方案。我尽量避免在控制器之间传递数据,这样这样的问题就不会发生。如果使用 MVC 结构,每个控制器只向模型询问它需要显示的信息,而不是具有内置依赖项。【参考方案2】:

在你想隐藏navBarviewController中添加以下viewDidLoad

self.navigationController!.isNavigationBarHidden = true

【讨论】:

以上是关于如何在 Swift iOS 中仅在最后一个屏幕上获取导航栏?的主要内容,如果未能解决你的问题,请参考以下文章

如何在最新的 iOS 14 中仅在 swiftui 中舍入滚动视图的顶角

YouTube 视频在 WebView Android 中仅在屏幕旋转时播放音频

#error Unsupported architecture - cdefs.h - Swift BLE 项目在 Swift 2.3 中运行良好,但在 Swift 3.0 中仅在真实设备上出现错误

如何在swift中仅共享内置的iOS应用程序

如何仅在第一次启动 IOS Swift 时显示页面控制器

如何在 iOS 上使用 swift 防止我的​​应用程序屏幕锁定