独立导航栏

声明导航栏的独立性

大多数情况下,我们使用UINavigationBar附带的UINavigationBar 。 在这种情况下,导航控制器将创建强大的条形图并将其显示,并且我们可以随时使用导航控制器对象访问实际的条形实例。 导航控制器还将自己设置为关联导航栏的委托。

但是,如何管理所有这些导航内容呢? 实际上,它具有相当合理的机制。 UINavigationBar包含用于显示内容的UINavigationItem数组。 根据Apple文件,UINavigationItem 手段;

当关联的视图控制器可见时,将由导航栏显示的项目。

例如,每当您将视图控制器推入导航控制器堆栈时,导航控制器都会获取即将到来的视图控制器的导航项,并将其推入导航栏的导航项数组。 另外,如果您从导航堆栈中弹出当前视图控制器,其导航项也会从导航栏的导航项数组中弹出。 如果要在其上方显示的导航栏上进行更改,则应处理视图控制器的导航项。 从Apple文档中获取的数据可以使您更清楚地了解这些内容。

当然,由于有了导航控制器,所有这些东西大多数时候都会在后台自动运行。

实际上,为了澄清谁可以控制上述导航栏,如果您问谁是导航栏的主角,答案肯定是UINavigationController

但是 ,可能有时候我们想打破这种纽带。 您可以认为它是没有必要的,甚至您可能也认为应该避免使用它,因为它是默认行为。 但是,让我们看一下我在现实世界中遇到的问题的简化版本;

您可以看到使用交互式弹出手势时导航栏正在褪色。 实际上,我认为它看起来很酷,但是这可能是不受欢迎的行为,尤其是您的产品经理期望您从屏幕顶部到底部的可靠过渡。 在这种情况下,我们应该使用独立的导航栏。