我正在創建一個基於Utility模板的應用程序。主屏幕由一個帶有幾個按鈕的菜單組成,每個按鈕創建一個不同的翻轉視圖。在其中一個翻轉視圖中,我還配置了一個導航控制器,只要我激活了NavigationBar,它就可以完美工作......我可以推動視圖,但必須使用「後退」按鈕返回到我的翻轉屏幕,側視圖,這將是導航控制器的根。如果我嘗試返回使用「popViewControllerAnimated」,正確配置按鈕,而不是NavigationBar的「後退」按鈕,問題就出現了。我的應用程序因某種原因崩潰,我無法理解爲什麼。popViewControllerAnimated不能正常工作,但後退按鈕能正常工作
我可以使用NavigationBar中的「後退」按鈕並忘記問題,但我更願意擁有自己的按鈕以便返回。
我的應用程序包括以下內容:
我APPDelegate.m:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
MenuViewController *menuController = [[MenuViewController alloc] initWithNibName:@"MenuView" bundle:nil];
self.menuViewController = menuController;
[menuController release];
menuViewController.view.frame = [UIScreen mainScreen].applicationFrame;
[window addSubview:[menuViewController view]];
[window makeKeyAndVisible];
return YES;
}
MenuViewController.m開始我的翻蓋側視圖:
- (IBAction)showFuelUpliftView {
FuelUpliftViewController *controller = [[FuelUpliftViewController alloc]
initWithNibName:@"FuelUpliftView" bundle:nil];
controller.delegate = self;
controller.title = @"Fuel Uplift";
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:controller];
[navController setNavigationBarHidden: NO];
navController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:navController animated:YES];
[navController release];
[controller release];
}
FuelUpliftViewController.m,我在那裏用按鈕推動NavigationController的第二個視圖:
- (IBAction)showFuelUplift2View:(id)sender {
UIViewController *controller = [[UIViewController alloc] initWithNibName:@"FuelUplift2View" bundle:nil];
controller.title = @"Settings";
[self.navigationController pushViewController:controller animated:YES];
[controller release];
}
最後,我FuelUplift2ViewController.m,在試圖返回時,應用程序崩潰:
- (IBAction)backFromFuelUplift2View {
[self.navigationController popViewControllerAnimated:YES];
}
我不知道這一切是有道理的,我目前正在與我的第一個應用開始,現在還在學習感謝傳統的試用錯誤方法。不過,我看不出這個問題的原因,並希望得到任何幫助。
非常感謝,
馬努
調試內存問題我發現下面的文章非常有用:http://www.cocoadev.com/index.pl?DebuggingAutorelease特別是我建議你設置NSZombieEnabled和MallocStackLogging環境變量,並檢查究竟是什麼失敗。 – SergGr 2010-05-03 13:09:35
我會嘗試一下,看看會發生什麼,感謝您的建議! – Manu 2010-05-03 17:26:04