我有一个基于导航的应用程序,允许用户深入了解层次结构。一些子层次结构中只有一个元素,例如
TopLevel1----->Level2a
TopLevel2 |->Level2b----->Level3a----->Level4a
|->Level2c
我不想让用户点击“Level3a”,而只是想从Level2b跳到Level4a,但是将Level3a视图保留在堆栈中,这样当用户回溯时,它就可见了。
我在这里找到了一些代码来模拟行点击:
Simulate a Detail Disclosure Button press
加载每个级别时,我会检查其中是否只有一个元素。如果是这样,我模拟行敲击。这一切都在最初工作,并加载最终视图。但是当我开始回溯视图层次结构时,我遇到了问题(看起来没有加载跳过的视图)。
我认为我想要完成的事情相当简单,所以我希望有人能指出我正确的方向。
答案 0 :(得分:0)
您应该可以在{3}视图控制器的[self.navigationController pushViewController:level4 animated:NO]
方法中进行viewWillAppear
调用。这将自动将level4推到level3之上。
如果它只在某些时候发生,则level3可以有一个属性来指示何时发生此行为。
答案 1 :(得分:0)
我不是百分百肯定会有用,但这就是我要做的。
您可以直接[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];