2013-02-21 42 views
0

我目前正在使用本指南,以便我可以用另一個視圖控制器替換根控制器。 http://starterstep.wordpress.com/2009/03/05/changing-a-uinavigationcontroller%E2%80%99s-root-view-controller/UINavigationController FUNKY

目前,我已經得到了我的應用程序。

考慮以下情形,視圖A(根) - >視圖B

在視圖B,存在其用於解析算法稱爲firstLine中(設置爲YES在viewDidLoad中)的布爾值。當我們第一次進入視圖時,該算法非常完美。 (圖A - >視圖B)

然而,這個新方案打破我的分析算法,

視圖A - >視圖B(壓回) - >視圖A - >視圖B(休息時間)

這是當我們第一次進入視圖時,布爾值(firstLine)在假設設置爲YES時奇怪地交替出現的位置。我開始相信第一個視角B仍然在後臺運行;因此,我嘗試了popViewController,但這並沒有真正的工作。它給了我一個黑屏,這顯然是我不想要的。

任何想法?

編輯:解決

原來我使用一個NSTimer和保持對自己的去了。因此,當我離開視圖時,我必須使其無效。

+0

我不是很確定我理解你。當你回到視圖A時,你想要firstline = YES嗎?您應該在ViewWillApear或viewDidAppear中設置值,然後。 – katzenhut 2013-02-21 22:54:32

+0

這個布爾值在視圖B中設置viewDidLoad 我在視圖B中使用此布爾值進行解析。 – freedom 2013-02-21 22:58:09

回答

0
[self.navigationController setViewControllers:myPreparedNewVCsStack 
animated:YES]; 

您可以過濾,移動和更換任何視圖控制器:在新的堆棧

NSMutableArray *tempStack = [NSMutableArray arrayWithArray:self.navigationController.viewControllers]; 

[tempStack filterUsingPredicate:[NSPredicate predicateWithFormat:@"class != %@", [AViewController class]]]; // the predicate can be even @"firstEnter == YES" 

你的最後一個視圖控制器將作爲頂一個!