나는 매우 일반적인 것으로 의심되는 시나리오가 IBOutlets 설정, 속성으로 NSmanagedobjects 전달 및 하나만 사용하여 비슷한 질문에 대한 다양한 아이디어를 발견했습니다. 컨트롤러를 보았지만 뷰를 교환하는 것이지만 내 솔루션을 위해 구현할 가장 좋은 아이디어는 무엇인지 확실하지 않습니다.viewcontrollers 사이의 데이터/개체/moc 전달 - 모범 사례
나는 전형적인 모델을 가진 iOS/iphone 앱이 있습니다. 여러 UINavigationController가 포함 된 UITabBarController.
내 탐색 컨트롤러 중 하나에서 tablecontroller가있는 viewcontroller가 있습니다. 이 tableView는 가져온 핵심 데이터 엔터티에서 채워집니다 '태그'라고합니다. UIBarButtonItem (Add)으로 tableView를 설정할 때 추가 버튼은 다음과 같이 동작해야합니다. 개체에 대한 새로운 '태그'개체를 만들고 일부 알려진 데이터로 개체를 채우고 사용자에게 드릴하라는 메시지가 필요합니다. topic 객체에 도달하기 위해 3 가지 분류 수준 (Region -> area - topic)을 내립니다. 그런 다음 원래 '새로 추가 된'태그 '객체 (스택 아래로 3 뷰)의 관계에'topic '객체를 추가해야합니다. - 그게 분명해.
(코드 많이 거기에 내가 그래서 난 내가 당신이보고 싶은 특정 코드를 알려 부디, 주요 조각으로 지금 설명하고있어 제시하는 비트를 모르겠어요.)
- (void)addTag {
NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext];
NSEntityDescription *entity = [[self.fetchedResultsController fetchRequest] entity];
NSManagedObject *newManagedObject = [NSEntityDescription insertNewObjectForEntityForName:[entity name] inManagedObjectContext:context];
[newManagedObject setValue:@"(untitled)" forKey:@"tagID"];
NSError *error;
if (![context save:&error])
NSLog(@"Error saving entity: %@", [error localizedDescription]);
ChooseRegion *aView = [[[ChooseRegion alloc] init] autorelease];
aView.theTag = newManagedObject;
[self.navigationController pushViewController:aView animated:YES];
}
개체를 만들고 속성 중 하나를 값으로 설정하고 저장 한 다음 개체를 다음 뷰 (chooseRegion)로 전달한 것을 볼 수 있습니다.이 개체는 3 가지보기 중 첫 번째보기입니다. 각각의 didSelectRowAtIndexPath 코드에서 선택한 행과이 '태그'객체를 다음보기로 전달합니다. 세 번째보기에서 주제 객체에 도달 할 때 무엇을해야할지 확신 할 수 없기 때문에 이것이 올바른지 확실하지 않습니다. ?? 나는 길을 잃었다.
항상 고양이를 피우는 한 가지 방법이 있지만이 문제를 해결해야하는 방법은 무엇입니까? '태그'객체를 전달하여 세 번째보기에 저장하거나 선택한 주제를 다시 전달하고 '태그'객체를 만든 원래 뷰에 저장해야합니까?
미리 감사드립니다.
감사합니다. @ eduardo, 전에 NSNotifcations를 사용하지 않았습니다. 나는 주위를 읽고 어떻게되는지 알아 보겠습니다. 사용자가 실제로 postNotification에 도착하지 않는다면 관찰자는 언로드 될 때까지 앉아 있어야하며, removeObserver를 적용하면 언제든지 재생할 수 있습니다. - 시간을내어 주셔서 감사합니다. – Barry
내가 시도 할 것 접근법은 UIBarButtonAdd 버튼에서 드릴을 시작하는 것입니다 (먼저 – Barry
을 작성하지 않고!- 내가 시도해 볼 접근법은 목록 뷰의 UIBarButtonAdd 버튼에서 드릴 다운을 시작하는 것입니다 (처음에는 새 객체를 만들지 않고). 드릴 다운 VC를 따라갈 수 있고 마지막에는 사용자가 선택할 때 사용할 수 있습니다. Postinotification에 주제가 UserInfo에 주제 객체를 전달합니다. UIButtonBarAdd가있는 VC는 viewDidLoad의 SetObserve와 viewDidUnload의 removeObserve입니다. HandleTopicSelected : 메서드는 새 객체를 만들어 객체를 채우고 컨텍스트를 저장합니다. 어떻게 들리니? 3VC를 닫아 사용자를 목록보기로 되돌려 놓을 방법이 남아 있습니다. – Barry