2012-03-09 121 views
2

我正在将我的iPhone应用转换为iPad版本,为iPad创建新的XIB并将它们绑定到使用〜ipad XIB名称的现有目标C类。当视图被忽略时,呈现视图会抛出EXC_BAD_ACCESS

在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

'mapView * MapView = nil;'Geez!你得到了错误的方式。只有类(例如NSString,UIWindow)应该以大写字母开头。为什么UIView_Controller_的一个子类叫做Map_View_?混乱如地狱。 – 2012-03-09 19:58:04

+0

检查您的MapViewController类是否是任何其他类的委托。当mapViewController被弹出和释放时,很可能会调用委托方法。也许是一个MKMapViewDelegate? – 2012-03-09 20:03:58

+0

是的,我知道,它很难打破这种习惯。我保证会更努力! Buuut我解决了它,见下面(在像5分钟) – 2012-03-09 20:17:00

回答

4

所以我得到了它!

我为iPad版创建的XIB是Windows而不是视图。我将所有这些重新创建为视图,并将其组装起来,它工作得很好!

相关问题