导航栏后退按钮,崩溃应用程序

时间:2012-11-28 11:10:15

标签: ios

我有基于导航的应用程序。我在应用程序UINavigationController委托方法中创建了didFinishLaunchingWithOptions,如下所示:

self.initialviewcontroller = [[InitialViewController alloc] initWithNibName:@"InitialViewController" bundle:nil];
UINavigationController *myNavController = [[UINavigationController alloc] initWithRootViewController:self.initialviewcontroller];

self.window.rootViewController = myNavController;
[self.window makeKeyAndVisible];

InitialViewController我有一个导航到SecondViewController的按钮。因此,在按钮的操作中,我按下SecondViewController如下:

if(self.secondView != nil)
  self.secondView = nil;
self.secondView = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
[self.navigationController pushViewController:self.secondView animated:YES];

情况:导航工作正常,我可以在InitialViewControllerSecondViewController之间导航。当我在SecondViewController并按设备的主页按钮时,应用程序进入后台,当我重新打开应用程序时,它会打开我关闭它的应用程序(即SecondViewController)。现在如果按下后退按钮转到InitialViewController,应用程序就会崩溃。

它在ios模拟器中运行良好,但在设备上发生崩溃。

我不明白我做错了什么?

这是我的错误代码

异常类型:EXC_BAD_ACCESS(SIGSEGV) 异常代码:KERN_INVALID_ADDRESS位于0x654b495d 崩溃的线程:0

线程0名称:Dispatch queue:com.apple.main-thread

2 个答案:

答案 0 :(得分:0)

您的代码

if(self.secondView != nil)
  self.secondView = nil;
self.secondView = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
[self.navigationController pushViewController:self.secondView animated:YES];

而不是使用以下内容。

SecondViewController *secondViewobj = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
    [self.navigationController pushViewController:secondViewobj animated:YES];

答案 1 :(得分:0)

我认为您的问题是uinavigationcontroller正在取消分配。 您应该将第二个视图放在uinavigationcontroller中,就像第一个一样,然后再试一次。

希望这会有所帮助:)