我有基于导航的应用程序。我在应用程序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];
情况:导航工作正常,我可以在InitialViewController
到SecondViewController
之间导航。当我在SecondViewController
并按设备的主页按钮时,应用程序进入后台,当我重新打开应用程序时,它会打开我关闭它的应用程序(即SecondViewController)。现在如果按下后退按钮转到InitialViewController,应用程序就会崩溃。
它在ios模拟器中运行良好,但在设备上发生崩溃。
我不明白我做错了什么?
这是我的错误代码
异常类型:EXC_BAD_ACCESS(SIGSEGV) 异常代码:KERN_INVALID_ADDRESS位于0x654b495d 崩溃的线程:0
线程0名称:Dispatch queue:com.apple.main-thread
答案 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中,就像第一个一样,然后再试一次。
希望这会有所帮助:)