2013-10-11 104 views
0

我試圖用另一個替換一個UIViewController,但是我遇到了問題。dismissViewControllerAnimated阻止顯示新的UIViewController

如果我寫這篇文章

[self dismissViewControllerAnimated:NO completion:nil]; 
//load currentProjectListViewController 
currentProjectListViewController = [[CurrentProjectListViewController alloc] initWithNibName:@"CurrentProjectListViewController" bundle:nil]; 
[self presentViewController:currentProjectListViewController animated:NO completion:nil]; 

這幾乎工作,但認爲只是閃爍並沒有任何反應..沒有新的風景被什麼的,我已經把一個破發點中currentProjectListViewController和螺紋從不它在那裏。

但是,如果我這樣做。

//load currentProjectListViewController 
currentProjectListViewController = [[CurrentProjectListViewController alloc] initWithNibName:@"CurrentProjectListViewController" bundle:nil]; 

[self presentViewController:currentProjectListViewController animated:NO completion:nil]; 

currentProjectListViewController加載完全正常。但是我擔心與之前的觀點有什麼不同?它在內存中卡住了嗎?或者它消失了?

我的問題是我怎麼能從內存以及網站消除它,而不會停止我的下一個視圖出現。

任何幫助將不勝感激。

+0

描述您的視圖控制器層次。 – bilobatum

+0

認爲靜態視圖。與另一個沒有關係。通常我使用導航控制器,如果我做了超過2個視圖的東西。但這個應用程序有5個,我的老闆會讓我把它們變成靜態的。所以在任何時候如果應用程序從內存中關閉,我可以直接打開它的視圖,而不必擔心其他視圖如何反應。 – HurkNburkS

回答

0

不,第二種方法是我所見到的正確方法。在第一種方法中,您要求風險投資人在新的風險投資出現之前將其解散。這將是沒有看法,這不會發生。 Bu提出一個新的VC,舊的VC將不會保留在內存中,因爲視圖的性質是它只在視圖中使用內存。我希望這樣做是有道理的。

+0

好吧我聽起來對我來說很有意義。我goig去嘗試做一些更多的調試,看看是不是這樣.. – HurkNburkS

+0

實際上,我一直在做一些調試,我不知道你的陳述是否正確。因爲當我加載舊的視圖備份它甚至從來沒有像viewdidload調用任何方法。所以它就像坐在那裏直到我加載的視圖被刪除。 – HurkNburkS

0

嘗試在解僱方法調用的完成處理程序呈現新的視圖控制器:

typeof(self) __weak weakSelf = self; //Need to have a weak reference to self to prevent retain cycle. 
[self dismissViewControllerAnimated:NO completion:^{ 
    currentProjectListViewController = [[CurrentProjectListViewController alloc] initWithNibName:@"CurrentProjectListViewController" bundle:nil]; 
    [weakSelf presentViewController:currentProjectListViewController animated:NO completion:nil]; 
}]; 
+0

由於某些奇怪的原因,如果我在大括號內放置了一個斷點,線程永遠不會進入代碼的那部分。我試了幾次,它不會加載新的視圖。 – HurkNburkS