如何在没有动画的情况下在导航层次结构中共享视图



我有一个简单的导航视图层次结构,它之间有2个视图。我想要一个自定义的导航栏,所以我有一个默认的隐藏,我已经实现了一个容器视图,它在导航层次结构的两个视图之间共享。

一切都像我想要的那样工作,除了当我segue到较低或较高的视图时,顶部栏出现滑动并重新出现在新视图上。我希望它出现静止时,我推或弹出到层次结构中的其他视图。

是否有简单的方法来做到这一点?或者我应该删除我的自定义共享容器视图,并尝试使此工作与导航栏(我目前"隐藏")?

我曾经为一个客户这样做过。我们做的方式是,就像你说的,做一个包含视图控制器来容纳一个容器视图。在这个容器视图中,我们嵌入了一个UINavigationController,并将UIViewController s手动弹出并推入其导航堆栈。当然你想隐藏UINavigationController的导航栏。

听起来像是你实现了这个,但你只是在你的自定义导航控制器中嵌入了一个普通的旧视图控制器,然后segue到另一个视图控制器它也嵌入在自定义视图控制器中?理想情况下,您需要一个带有嵌入式UINavigationController的自定义导航控制器实例。我相信你必须用编程的方式来完成所有的视图控制器转换。

意见:我个人建议不要这样做。我相信一个应用程序应该是它所在操作系统的延伸。用户应该觉得这是他们手机的一部分。使用原生导航条还可以减少用户理解应用程序所需要付出的努力。

我知道你在想"但这只是一个导航条",但我们说的是那些如果加载时间超过2.5秒就可能卸载应用的人。

我想要一个自定义的导航栏,所以我有一个默认的隐藏

那是你的错。在UINavigationController接口中获得自定义导航栏的方法是用init(navigationBarClass:toolbarClass:)初始化它。现在内置导航控制器正在使用您的导航栏!从那时起,一切都会好起来的。

https://developer.apple.com/reference/uikit/uinavigationcontroller/1621866-init

最新更新