2013-12-18 45 views
1

我試圖通過賽格瑞從我masterViewController送我managedObjectContext到anotherController,我總是收到此錯誤:發送managedObjectContext到的viewController崩潰

-[UINavigationController setManagedObjectContext:]: unrecognized selector sent to instance 0x8d67c70 
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UINavigationController setManagedObjectContext:]: unrecognized selector sent to instance 0x8d67c70' 

我從我的appDelegate得到managedObjectContext在viewDidLoad()的masterViewController是這樣的:

AppDelegate *appDelegate = [UIApplication sharedApplication].delegate; 
self.managedObjectContext = appDelegate.managedObjectContext; 

我不可能想到任何我可以做錯了,請幫助。

+0

顯示managedObjectContext你的聲明部分中masterViewController – manujmv

+0

你在主視圖聲明'managedObjectContext'? –

+0

它是這樣聲明的:'@property(strong,nonatomic)NSManagedObjectContext * managedObjectContext;'我也嘗試了retain選項,但是什麼也沒有。 – kalafun

回答

2

我猜測具有managedObjectContext屬性的視圖控制器嵌入在導航控制器中。在SEGUE方法,請確保你抓到正確的視圖控制器的引用:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([[segue identifier] isEqualToString:@"MySegue"]) { 

     UINavigationController *navController = (UINavigationController *)segue.destinationViewController; 
     MyViewController *vc = (MyViewController *)navController.topViewController; 

     AppDelegate *appDelegate = [UIApplication sharedApplication].delegate; 
     vc.managedObjectContext = appDelegate.managedObjectContext; 
    } 
} 
+0

非常感謝,它做到了,我完全忘記了我在otherController之前有一個navigationController。 – kalafun

0

您在UINAvigationController上調用setter方法,該方法僅在創建屬性managedObjectContext時才存在。所以你將不得不繼承UINavigationConroller,創建屬性,然後你應該能夠從另一個類中設置它。

相關問題