2010-11-29 35 views
1

我有一個基於導航的應用程序,允許用戶深入查看層次結構。有些孩子層次在他們只有一個元素,例如,通過導航層次結構自動向下鑽取?

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

而不是讓用戶點擊「Level3a」,我只是想從Level2b跳到Level4a,但保留Level3a視圖在棧中,以便當用戶回溯時,它是可見的。

我發現一些代碼在這裏來模擬連續兩次:

Simulate a Detail Disclosure Button press

當每一級加載,我檢查,看看是否有中只有一個元素。如果是這樣,我模擬行龍頭。這一切最初都起作用,並且加載了最終視圖。但是當我通過視圖層次結構開始回溯時,出現問題(似乎沒有加載跳過的視圖)。

我想我想要完成的事情相當簡單,所以我希望有人在這裏能指引我走向正確的方向。

回答

0

您應該可以爲您的level3視圖控制器在viewWillAppear方法中放置[self.navigationController pushViewController:level4 animated:NO]調用。這會自動推動level3之上的level4。

如果它只發生在一些時間,level3可以有一個屬性來指示何時發生此行爲。

+0

謝謝,但是這給了我同樣的結果。其實,使用動畫:NO給了我非常奇怪的結果。如果將其更改爲動畫:YES,則可以得到與使用模擬的行抽頭代碼相同的結果。我正在挖掘我的代碼,試圖看看發生了什麼。 – smacdonald 2010-11-29 02:56:00

0

我不是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]; 
相關問題