自动向下钻取导航层次结构?

Posted

技术标签:

【中文标题】自动向下钻取导航层次结构?【英文标题】:Automatically drill down through navigation hierarchy? 【发布时间】:2011-05-17 01:36:23 【问题描述】:

我有一个基于导航的应用程序,允许用户向下钻取层次结构。一些子层次结构中只有一个元素,例如,

TopLevel1----->Level2a
TopLevel2   |->Level2b----->Level3a----->Level4a
            |->Level2c    

我不想让用户点击“Level3a”,而是只想从 Level2b 跳转到 Level4a,但将 Level3a 视图保留在堆栈中,这样当用户回溯时,它是可见的。

我在这里找到了一些代码来模拟行点击:

Simulate a Detail Disclosure Button press

每个关卡加载后,我都会检查其中是否只有一个元素。如果是这样,我模拟行点击。这一切最初都有效,最终视图被加载。但是当我开始通过视图层次结构回溯时,我遇到了问题(似乎没有加载跳过的视图)。

我认为我想要完成的事情相当简单,所以我希望这里的人能指出我正确的方向。

【问题讨论】:

【参考方案1】:

您应该能够在您的 level3 视图控制器的 viewWillAppear 方法中调用 [self.navigationController pushViewController:level4 animated:NO]。这将自动将 level4 推到 level3 之上。

如果它只在某些时候发生,level3 可以有一个属性来指示这种行为何时发生。

【讨论】:

谢谢,但这给了我同样的结果。实际上,使用动画:NO 给了我非常奇怪的结果。如果我将其更改为动画:YES,我会得到与使用模拟行点击代码相同的结果。我正在挖掘我的代码,试图看看发生了什么。【参考方案2】:

我不能 100% 确定这会奏效,但这就是我会做的。

您可以直接[self.navigationController pushViewController:level4a animated:NO],完成后,设置viewControllers 的新数组,即navigationController 属性(包含Level3a 的数组)。

这是一个代码示例,在你didSelectRowAtIndexPath:

[self.navigationController pushViewController:level4a animated:NO]; //Push the level 4 first
NSMutableArray* mutableViewControllers = [self.navigationController.viewControllers mutableCopy];
[mutableViewController addObject:level3a atIndex:3]; //Add the level 3 manually
self.navigationController.viewControllers = mutableViewControllers;
[mutableViewControllers release];

【讨论】:

以上是关于自动向下钻取导航层次结构?的主要内容,如果未能解决你的问题,请参考以下文章

Swift - 使用 UITableView 向下钻取分层数据

Navigation Drawer 中真正向下钻取导航的最佳方法

BI中的数据钻取是啥

UINavigationController 使用表格视图向下钻取

如何实现报表数据的动态层次钻取

如何实现报表数据的动态层次钻取