2

我有一個菜單屏幕,實現UINavigationController,並在該屏幕的頂部,使用presentModalViewController,我放置另一個屏幕上我想要另一個UINavigationController。我試圖實現另一個導航控制器來處理新的屏幕,但我要麼沿着屏幕的1/8得到一個導航欄,並且它崩潰或者什麼也沒有。我試過[[UINavigationController alloc] initWithRootViewController:navigationConroller]也沒有成功。我只是使用pushViewController嘗試將下一個筆尖放在不起作用的堆棧上。我究竟做錯了什麼?UINavigationController with presentModalViewController

+0

你可能不會得到任何迴應,直到你發佈你的代碼來顯示你在做什麼。 – coneybeare 2009-10-26 05:11:46

回答

10

儘管有很多人在論壇上表示蘋果公司不允許這樣做,但我已經有了它。你需要做的是:

Map *mapScreen = [[[Map alloc] init] autorelease]; 
mapScreen.delegate = self; 

UINavigationController *navController = [[[UINavigationController alloc] initWithRootViewController:mapScreen] autorelease]; 

[self presentModalViewController:navController animated:YES]; 
+0

這也是我使用的方法,UINavigationController只是UIViewController的一個子類,您可以像使用UIViewController一樣完成所有相同的操作。 – 2010-09-07 04:09:20

+0

這是蘋果在iOS視圖控制器編程指南中描述的技術:模態視圖控制器。也許人們在評論你對autorelease的不必要使用。當你使用presentModalViewController時:mapScreen和navController都由self自己保留,並且可以通過self.modalViewController訪問,所以你可以並且應該立即釋放它們。 – 2010-12-23 12:21:00

+0

咦?它就是這樣的例子,我通常不使用autorelease,但僅僅是爲了方便我將它作爲autorelease放在這裏的例子,意味着人們知道它應該被釋放。這也是非常古老的,當時大多數論壇都說你不能這樣做,因此答案中的第一個陳述。 – Rudiger 2010-12-23 22:25:24

相關問題