嵌套导航控制器上的iOS8行为

时间:2015-05-15 23:28:40

标签: ios uinavigationcontroller uitabbarcontroller uisplitviewcontroller

我的应用程序有一个顶级导航控制器。它像往常一样在不同页面之间导航并在顶部显示导航面板。其中一个页面是带有3个选项卡的选项卡控制器。每个选项卡都有自己的导航控制器,因为当我在选项卡中时,我需要在该选项卡内容之上打开一个新页面(标签栏仍然可见)。我的问题:"内部"导航工作正常,推送页面等,但它不能"控制"在屏幕顶部的导航面板上。这个面板仍然显示全局页面导航,而我想显示"内部"导航,如果内部没有历史,那么全局导航。通过说"显示导航"我的意思是只是后退按钮。

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

1 个答案:

答案 0 :(得分:1)

有多种方法可以达到你想要的效果。

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

然后你可以用适当的东西来处理它(无论你的内部导航器是否正在显示等)。

第二种方法是在您要显示内部导航栏时隐藏外部导航控制器的导航栏,如@ Paulw11在评论中所述。您应该能够以任何方式获得无缝结果。

相关问题