我正在将我的iPhone应用程序转换为iPad版本,为iPad创建新的XIB,并使用~ipad XIB名称将它们绑定到现有的目标C类。
在iPhone版本中,我使用导航控制器向后退到应用程序。这也应该在iPad上运行得很好,但是当导航控制器确实出现时,它没有响应。实际上它对于任何交互都是不可见的,如果导航控制器后面有一张地图,你再双击一下,你只需缩放你点击的地图。
所以我在iPad视图中包含一个按钮,它应该做同样的事情。按下我打电话给
[[self navigationController] popViewControllerAnimated: YES];
当我打电话给我时,我得到了EXC_BAD_ACCESS。我已经进入幽灵般的僵尸模式,这给了我这个
*** -[UIWindowLayer superlayer]: message sent to deallocated instance 0x83bb9f0
我确定0x83bb9f0
是展示图层self.view.layer
我正在使用ARC处理我的分配和deallocs。
问题:如何阻止self.view.layer
解除分配?或者如何在适当的时间再次分配它以便我不会收到此错误?
如果需要,我可以提供更多代码。非常感谢!!
编辑:继承人创建主页面(登录页面)和导航控制器
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
landingPage *LandingPage = [[landingPage alloc] initWithNibName:@"landingPage" bundle:nil];
self.navigationController = [[UINavigationController alloc] initWithRootViewController:LandingPage];
self.window.rootViewController = self.navigationController;
// [self.navigationController pushViewController:LandingPage animated:YES];
[self.window makeKeyAndVisible];
return YES;
然后在这里调用内部视图:
mapView *MapView = nil;
MapView =[[mapView alloc] initWithNibName:@"mapView" bundle:nil];
[self.navigationController pushViewController:MapView animated:YES];
答案 0 :(得分:4)
所以我明白了!
我为iPad版创建的XIB是Windows而不是视图。我重新创建了所有这些作为视图并操纵它并且它工作得很好!