這是我的問題。 我有一個基於視圖的應用程序。 我向AppDelegate
添加了NavigationController
,如下所示。IOS。導航控制器。重用ViewControllers
UINavigationController *nvc = [[UINavigationController alloc] initWithRootViewController:_viewController];
navigationController = [nvc retain];
[nvc retain];
[self.window addSubview:navigationController.view];
這段代碼是我從網上獲得的。我不知道這是否正確。
在所有的viewControllers我做以下推新視圖。
UIViewController *newViewController = [[NewViewController alloc] init];
[self.navigationController pushViewController:newViewController animated:TRUE];
我不知道爲什麼
self.navigationController
不會在推視圖返回零。它以某種方式使用AppDelegate導航控制器?如果我想重用一些視圖控制器。我的意思是每次我想調用視圖控制器時都不會分配init。我怎樣才能做到這一點?在
AppDelegate
中儲存參考?其他解決方案?我有一個複雜的導航。即A,B,C是視圖控制器。 A呼叫B. B呼叫C. C呼叫A.如果我一直呼叫,我每次都創建一個新的視圖控制器。我該如何重用這些視圖控制器(或者在調用新視圖時彈出並釋放視圖)?
謝謝。
也許答案是不使用NavigationController。有沒有辦法推動一個新的視圖控制器而不使用它? 也許只是推送一個新的視圖控制器,而不添加到任何堆棧解決了我的問題。你怎麼看? – Tony 2011-12-21 13:44:10
這完全取決於你希望用戶如何與你的應用進行交互。你也可以通過使用'presentModalViewController:animated:'來顯示一個新的視圖控制器,它將使新的視圖控制器模態在當前UI的頂部。 – mattjgalloway 2011-12-21 13:49:04
馬特, 想象一下,我有viewcontroller A,B和C. A是基礎的。 A可以去B,B可以去C,C可以去B. B或C可以返回A.像這樣:A-> B,B <-> C,C-> A,B-> A。 我可以在A,推B中有一個導航控制器,當B調用C推C並同時在A的導航控制器中彈出B? 所以我有以下內容: - A調用B。導航控制器堆棧:A,B - B調用C.導航控制器堆棧:A,C - C調用B。導航控制器堆棧:A,B - B返回到A.導航控制器堆棧:A 這是正確的嗎?如何在呼叫另一個視頻後彈出視圖? – Tony 2011-12-21 13:56:15