【问题标题】:iOS8 behavior on nested navigation controllers嵌套导航控制器上的 iOS8 行为
【发布时间】:2015-07-28 00:11:25
【问题描述】:

我的应用有一个顶级导航控制器。它像往常一样在不同页面之间导航并在顶部显示导航面板。其中一个页面是带有 3 个选项卡的选项卡控制器。每个选项卡都有自己的导航控制器,因为在选项卡中时,我需要打开一个在该选项卡内容之上推送的新页面(选项卡栏仍然可见)。我的问题:“内部”导航工作正常,推送页面等,但它无法“控制”屏幕顶部的导航面板。此面板仍在显示全局页面导航,而我想显示“内部”导航,如果内部没有历史记录,则显示全局导航。我所说的“显示导航”是指后退按钮。

理由:该应用在顶层有一个拆分视图控制器 - 它成为一个简单的导航控制器,用于紧凑的尺寸。它正在浏览不同的页面,其中一个页面是媒体播放器/选择器(如 iOS 内置的音乐应用程序)。媒体选择器是一个标签控制器,有 3 个标签用于过滤媒体,假设它就像音乐应用程序 - 歌曲、艺术家、专辑。当您切换到艺术家选项卡时,您可以看到艺术家表。单击其中一个将打开该艺术家的歌曲列表,就像在“音乐”应用中一样。新的过滤页面正常推送,但屏幕顶部的导航面板仍然显示全局导航。我想合并这两个导航,所以需要一种方法来在需要时接管这个面板的控制。似乎它忽略了嵌套导航的后退逻辑,或者我没有找到一个很好的方法来做到这一点。假设您应该将 iOS 音乐应用程序放在一个拆分视图(或导航)控制器中,它只是全局屏幕之一,但在过滤曲目时仍然需要一个很好的导航逻辑。

【问题讨论】:

  • 您需要在适当的时候将外部导航控制器的navigationBarHidden 设置为YES

标签: ios uinavigationcontroller uitabbarcontroller uisplitviewcontroller


【解决方案1】:

这里有多种方法可以实现您想要的。

您可以编写一些额外的代码来确定后退按钮在全局导航器中的作用。这相当于用一个相同但调用您自己的方法的按钮替换内置的后退按钮。

然后你可以用任何合适的方法来处理它(你的内部导航器是否显示等)。

第二种方法是在您即将显示内部导航栏时隐藏外部导航控制器的导航栏,正如@Paulw11在评论中所说。无论哪种方式,您都应该能够获得无缝结果。

【讨论】:

    猜你喜欢
    • 2018-03-24
    • 1970-01-01
    • 1970-01-01
    • 2020-04-06
    • 2012-07-05
    • 1970-01-01
    • 2023-03-20
    • 2019-09-17
    • 1970-01-01
    相关资源
    最近更新 更多