在不同的ViewControllers之间共享UINavigationItem

时间:2013-12-18 19:42:22

标签: ios

我需要在众多屏幕的顶部实现一个带条形导航栏的应用程序。

左侧有一个图标,右侧有一些文字和一些按钮,因此这些按钮可以很好地映射到导航项目的左栏按钮项目,标题视图和右侧栏按钮图标。

然而,在大多数屏幕上,条形图的内容保持不变 - 即后退按钮和标题更改仅偶尔出现在某些屏幕上,而在其他屏幕上则会出现导航栏但实际上并未用于导航目的

最好是实现这个来配置UINavigationItem,如果是这样,因为有多个屏幕和多个视图控制器,无论如何都可以共享相同的UINavigationItem?这样我就可以在RVC中配置UINavigationItem,并在不同的视图控制器被推送时将其保持在那里,当实际需要显示后退按钮时,将其替换为需要的位置?

如果这不是最佳方法,那么还有哪些替代方案?我尝试将我的RVC设置为容器视图控制器并添加条形图作为视图,它适用于直接子视图控制器,但不适用于孙视图控制器(这将占用整个屏幕而不是分配给它们的部分)容器视图)。

1 个答案:

答案 0 :(得分:0)

UIViewController中的navigationItem是只读的,因此您不能在视图控制器之间共享单个共享UINavigationItem。您可以拥有一个基本视图控制器类,用于管理从中派生所有视图控制器的导航项。为了防止您的类过于耦合,您可以从NSNotification更新navigationItem的内容。然后,您可以在需要更新所有导航项时发布通知。