为 UITabBarController 子视图控制器设置相同的导航栏?
Posted
技术标签:
【中文标题】为 UITabBarController 子视图控制器设置相同的导航栏?【英文标题】:Set same navigation bar for UITabBarController child view controllers? 【发布时间】:2018-02-27 14:29:13 【问题描述】:我有一个看起来像这样的故事板:
Structure:
UINavigationController -> UIViewController
UITabBarController |
UINavigationController -> UIViewController
我想为UITabBarController
的两个子视图控制器应用相同的导航栏。
我在互联网上的多个页面上读到,Apple 严格建议不要将 UITabBarController
直接嵌入到 UINavigationController
中。
但是,我不知道如何为所有底层控制器获取相同的状态栏(我希望所有按钮在所有控制器上都相同)。
正如 cmets 中所说,我希望两个 UINavigationControllers
看起来相同,我希望它们通过相同的控制器导航,并且我希望在每个 UINavigationController
中添加功能相同的自定义按钮。
【问题讨论】:
你说的“同一个导航栏”是什么意思?你想让它看起来一样吗?或者您是否希望导航栏通过相同的控制器导航?您是否尝试向导航栏添加自定义按钮,并且希望在不同的导航控制器中使用相同的按钮? @DonMag “相同的导航栏” 是指共享与相同功能和操作相关的自定义栏按钮项的导航栏。UITabBarController
的两个子项在导航栏中应该具有相同的按钮和相同的操作。我也想浏览相同的控制器。所以我会用“yes”回答你最后三个问题。只是为了说清楚。
好吧——这可能有点混乱……如果每个 Tab 加载相同的 NavigationController,具有相同的 ViewController,那么 Tabs 之间有什么区别?用户会清楚吗?
它们都包含一个加载不同内容的表格视图。第一个加载一些联系人,而另一个(第二个)加载聊天(消息)。用户应该很清楚,因为选项卡栏突出显示了选定的选项,并且表格视图具有其他内容。基本上,有一个UITabBarController
有两个UITableViewController
作为子级(或修改后的UIViewControllers
包括一个UITableView
)。使用导航栏(自定义按钮),用户可以访问另一个视图控制器。
嗯...所以,用户在 Tab-1(联系人)...选择一个联系人,“联系人详细信息”VC 被推送到 NavController...用户选择 Tab -2 ... NavController 会发生什么?它“弹回”但加载不同的内容?所以点击选项卡看起来与点击“返回”相同,但它并没有真正返回?也许您真正想要的是显示底部工具栏的 NavController,并向工具栏添加按钮以更改 NavController 堆栈的当前“模式”?
【参考方案1】:
Here is a good example of what you wat
基本上你可以使用
UINavigationBar.appearance()
在整个应用程序中为您的导航栏(或其他元素)提供相同的 UI。
【讨论】:
@AndrejDurnea 我将如何实现自定义栏按钮项和操作? 如果您需要应用程序的UI自定义相同,您可以使用外观来完成。您根据需要在每个控制器中添加的功能。以上是关于为 UITabBarController 子视图控制器设置相同的导航栏?的主要内容,如果未能解决你的问题,请参考以下文章
在 UITabBarController 中的两个子视图控制器之间转换
如何从自己的子视图控制器中关闭模态 uitabbarcontroller
交互PopGesture时如何处理UITabBarController的子视图(如Flipboard)
UITabBarController 的子视图控制器中的导航栏按钮无响应