0

여러보기를 통해 managedObjectContext (MOC)를 전달하기위한 "배턴 전달"메소드를 사용하려고합니다. 나는 그것이 rootViewController에 성공적으로 전달되었다. 거기에서 나는 presentViewController을 통해 tabBarController로 이동합니다. tabBarController가 푸시 될 때 MOC를 전달하는 방법을 찾지 못하는 것 같습니다.presentViewController를 통해 managedObjectContext 전달

AppDelegate.m

UIViewController *navigationController = (UIViewController *)self.window.rootViewController; 
MyViewController *controller = (MyViewController *) navigationController; 
controller.managedObjectContext = managedObjectStore.mainQueueManagedObjectContext; 

메인 뷰 컨트롤러는 기본적으로 로그인 화면으로 당신을 걷어차거나하는 경우 이미 tabBarController에 로그인하는 시작 화면입니다. 아래는 viewDidAppear 메서드 내에서 tabBarController로 이동하는 부분입니다.

MyViewController.m

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil]; 
UIViewController *mainTabVC = [storyboard instantiateViewControllerWithIdentifier:@"mainTabVC"]; 
[mainTabVC setModalPresentationStyle:UIModalPresentationFullScreen]; 
[self presentViewController:mainTabVC animated:NO completion:nil]; 

스토리의 tabBarController가 식별자 「mainTabVC "를 갖는다.

내가 해봤

MyTabBarController.managedObjectContext = self.managedObjectContext; 

같은 라인하지만 난 얻을 오류 재산권 내가

MyTabBarController.h

에 선언 된 속성이 할 경우에도 형 MyTabBarController의 객체를 찾을 수 없습니다 'MOC'수 누군가가 MOC를 탭 막대 컨트롤러로 밀어 넣을 수있는 코드 줄을 보여줍니다.

BTW- 내가 이걸 처리해야하는 방식을 변경하면이 앱에서 RestKit을 활용하고 있습니다. 알려 주시기 바랍니다.

** * **솔루션* ** * ****

같은 질문 다른 새로운 사람을위한 일을 명확하게합니다. 나는이에서 갔다 : 여기에

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil]; 
    UIViewController *mainTabVC = [storyboard instantiateViewControllerWithIdentifier:@"mainTabVC"]; 
    [mainTabVC setModalPresentationStyle:UIModalPresentationFullScreen]; 
    [self presentViewController:mainTabVC animated:NO completion:nil]; 

:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil]; 
    MyTabBarViewController *mainTabVC = [storyboard instantiateViewControllerWithIdentifier:@"mainTabVC"]; 
    mainTabVC.managedObjectContext = self.managedObjectContext; 
    [mainTabVC setModalPresentationStyle:UIModalPresentationFullScreen]; 
    [self presentViewController:mainTabVC animated:NO completion:nil]; 

공지 사항 세 번째 줄에서 할당과 두 번째 줄에 대신의 UIViewController의 MyTabBarViewController를 사용합니다. 다시 큰 감사합니다 rdelmar!

답변

0

코드가 다소 혼란 스럽습니다. MyTabBarController가 클래스입니까? mainTabVC가 귀하의 인스턴스 인 것 같습니다. 클래스보다는 클래스를 사용해야하며 UITabBarController 대신 mainTabVC를 MyTabBarController로 인스턴스화 할 때 유형을 변경해야합니다. 또한 스토리 보드를 할 필요가 없으며 self.storyboard 만 사용할 수 있습니다.

MyTabBarController *mainTabVC = [self.storyboard instantiateViewControllerWithIdentifier:@"mainTabVC"]; 
    mainTabVC.managedObjectContext = self.managedObjectContext; 
    [mainTabVC setModalPresentationStyle:UIModalPresentationFullScreen]; 
    [self presentViewController:mainTabVC animated:NO completion:nil]; 
+0

와우, 감사합니다 rdelmar 정확하게 작동하는 방법. 나는 그날 밤 (질문을 게시하기 전에) 그 블록의 두 번째 줄에있는 똑같은 라인을 (다른 많은 것들과 함께) 사용해 보았다. 내가 실패한 곳은 첫 번째 줄에 "MyTabBarController"하위 클래스가 아닌 UIViewController 클래스를 사용하는 것입니다! 나는 나를 위해 그것을 명백하게하기위한이 감사에 꽤 새로울 것이다! – Ben

관련 문제