我正在创建一个基于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