如何对所有 UIViewControllers 使用相同的 UINavigationBar

How to use same UINavigationBar for all UIViewControllers

在我的应用程序中,我必须为所有 UIViewControllers 显示相同的 NavigationBar。这个 NavigationBar 有三个按钮,这三个按钮将充当 TabBar 功能,即每个选项卡都有自己的堆栈循环。我已经使用三个按钮为 NavigationBar 创建了自定义视图,但是在将这个自定义视图添加到 HomeViewController 之后,我必须为所有其他视图控制器手动添加这个自定义视图。我不想这样做。

有什么简单的方法可以实现吗?

我想到了几个想法。首先,您可以使用 view controller containment 并且实际上有 1 个控制器来实现您的自定义导航栏,然后根据需要更换包含的控制器。

如果这不可行,您可以简单地使用继承并让所有自定义控制器继承自具有导航栏的控制器。

另一种选择是编写您自己的 UINavigationController 子类。我不确定您是否可以覆盖 UNavigationItem 行为,但如果可以,您可以这样做——而不是 UINavigationController 使用它的 child 的 UINavigationItem 来更新它自己的 UINavigationBar,UINavigationBar 也许只是保持不变,就像你 expecting/hoping.