2012-03-09 49 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而不是視圖。我將所有這些重新創建爲視圖,並將其組裝起來,它工作得很好!