2011-04-27 177 views
2

我有一個使用UINavigation的遊戲設置屏幕,我試圖重置或清除UINavigation一旦一個人選擇了一種顏色。如何清除或重置UINavigation歷史記錄?

我的應用程序的當前進程可以在下面的圖中最好的描述:

Start application -> New game -> Pick character -> Pick Color -> Start game 

直到「選取顏色」我用的是UINavigation,然而,當一個顏色挑選我想清除UINavigation歷史。

這樣做的原因是,一旦你開始遊戲,你就不能回去,並且希望UINavigation在沒有跡象表明你可以回去的情況下進行清理(這還包括回到屏幕main menu)。

我現在這樣做的方式就是這樣;

[self.navigationController popToRootViewControllerAnimated:YES]; 

GameDashboardVC *dashboard = [[GameDashboardVC alloc] initWithNibName:@"GameDashboardVC" bundle:nil]; 
dashboard.title = @"Dashboard"; 
dashboard.managedObjectContext = self.managedObjectContext; 

[self.navigationController pushViewController:dashboard animated:YES]; 

[dashboard release]; 

問題是,它彈出到rootViewController,但它從不會將儀表板推到堆棧上。

我已經試過:

[self.parentViewController.navigationController pushViewController....] 

我沒有試過是把我的儀表盤推根視圖控制器本身裏面,但我擔心,因爲我不知道如果它甚至應該是唯一那裏。

因此,哪裏是放這種功能的正確位置,以及如何清除UINavigation的堆棧。

謝謝你的時間/幫助。

+0

通過你的UINavigationController viewControllers財產,扔掉你不想要的人? – onnoweb 2011-04-27 18:06:41

+0

我會盡力表示感謝。 – zardon 2011-04-28 05:50:31

回答

1

我現在解決了這個問題讓我滿意。

我把下面的代碼我initWithNibName方法中:

self.navigationItem.hidesBackButton = YES; 

這個隱藏後退按鈕和我沒有彈出任何東西,但我覺得對於內存的原因可能是保持有用的想法從堆棧中刪除不必要的物品。

但現在上面會做。

+0

我做了另一個解決方案,我把所有的「新遊戲初始化」東西放入一個模態視圖中,並用它自己的uinavigation。模態觀點的方式也是一樣,可以被認爲是更合乎邏輯的。唯一的問題是當你刪除模式並將主菜單視圖推入堆棧。話雖如此,無論哪種方式似乎都行得通。 – zardon 2011-05-03 18:50:09

1

如果要重置UINavigation歷史記錄,請重新初始化導航控制器。

如果您使用AppDelegate類中的UINavigationController。您可以重新初始化導航歷史記錄。

appDelegate.navigationController = [[UINavigationController alloc] init];

上面的代碼將重置navigationController歷史..