1

我有基于导航的应用程序。我创建了一个这样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];

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

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

我不明白我犯了什么错误?

这是我的错误代码

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

线程 0 名称:调度队列:com.apple.main-thread

4

2 回答 2

0

我认为您的问题是 uinavigationcontroller 正在被释放。您应该像第一个一样将您的 secondView 放在 uinavigationcontroller 中,然后重试。

希望这可以帮助 :)

于 2012-11-28T13:54:17.030 回答
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];
于 2012-11-28T11:44:11.797 回答