自动向下钻取导航层次结构?
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 中真正向下钻取导航的最佳方法