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

时间:2016-10-06 20:14:45

标签: ios swift xcode uinavigationcontroller uiviewanimation

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

一切都按照我想要的方式工作,除非我转向较低或较高的视图时顶部栏显示为滑动并重新出现在新视图上。当我推送或弹出层次结构中的其他视图时,我希望它显得静止。

有一种简单的方法吗?或者我应该删除我的自定义共享容器视图并尝试使用导航栏(我当前“隐藏”)来使用它?

2 个答案:

答案 0 :(得分:1)

我必须为客户做一次。我们这样做的方式就像你说的那样,制作一个包含容器视图的包含视图的控​​制器。在此容器视图中,我们嵌入了UINavigationController并手动弹出并将UIViewController推送到其导航堆栈。当然你想要隐藏UINavigationController的导航栏。

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

意见:就个人而言,我建议反对这样做。我相信应用程序应该感觉它是操作系统的扩展。用户应该感觉它是手机的一部分。使用本机导航栏还可以降低用户理解应用程序所需的工作量。

我知道你在考虑“但它只是一个导航栏”但我们谈论的是同样的人,如果加载时间超过2.5秒,可能会卸载应用程序。

答案 1 :(得分:1)

  

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

这是你的错误。在UINavigationController接口中获取自定义导航栏的方法是使用init(navigationBarClass:toolbarClass:)对其进行初始化。现在,内置导航控制器正在使用您的导航栏!从那以后,一切都会好的。

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