두 개의보기 컨트롤러에 걸쳐 몇 개의 NSArrayController를 연결하는 방법에 대해 머리를 감싸는 데 문제가 있습니다. 두 번째 상세보기 컨트롤러의 값을 업데이트하려면 소스 목록 테이블보기에서 선택 항목을 동기화하고 싶습니다.하나의 창 인터페이스에서 여러보기 컨트롤러에 걸쳐 선택 바인딩
저는 Cocoa Dev Central Build A Core Data Tutorial을 시작점으로 사용하지만 두 개의 NSViewController가 포함 된 NSWindowController가 있도록 아키텍처를 무너 뜨 렸습니다. 하나는 왼쪽의 posts 테이블이고 다른 하나는 오른쪽의 게시물 세부 정보입니다.
NSWindowController 서브 클래스는 포스트 엔티티와 나는 다음 windowDidLoad
방법에있는 두 개의 뷰 컨트롤러를 초기화
[[NSApp delegate] managedObjectContext]
를 가리키는 읽기 전용 managedObjectContext 접근에 바인딩 된 NSArrayController 있습니다.
- (void)windowDidLoad
{
static NSInteger kSourceListViewIndex = 0;
static NSInteger kDetailViewIndex = 1;
self.postsListsViewController = [[MDVCPostsListViewController alloc] initWithWindowController:self];
NSView *sourceListSplitViewContentView = [[self.splitView subviews] objectAtIndex:kSourceListViewIndex];
NSView *sourceListView = [self.postsListsViewController view];
[sourceListView setFrame:[sourceListSplitViewContentView bounds]];
[sourceListView setAutoresizingMask:(NSViewWidthSizable | NSViewHeightSizable)];
[sourceListSplitViewContentView addSubview:sourceListView];
// And now let's load the detail view.
self.postDetailViewController = [[MDVCPostDetailViewController alloc] initWithWindowController:self];
NSView *detailSplitViewContentView = [[self.splitView subviews] objectAtIndex:kDetailViewIndex];
NSView *detailView = [self.postDetailViewController view];
[detailView setFrame:[detailSplitViewContentView bounds]];
[detailView setAutoresizingMask:(NSViewWidthSizable | NSViewHeightSizable)];
[detailSplitViewContentView addSubview:detailView];
}
MDVCPostsListViewController
MDVCPostDetailViewController
(모든 인터페이스 빌더를 통해) 부모 윈도우 컨트롤러의 관리 개체 컨텍스트에 바인딩 포스트 엔티티 및 관리되는 개체 컨텍스트에 NSArrayController을 구속했다가 윈도우 컨트롤러의 관리에 NSObjectController를 결합했다 객체 콘텍스트와 콘텐트 객체는 postsListsViewController.postsArrayController.selection
을 통해 윈도우 콘트롤러에 바인딩된다. 이것은 정말 짜증나는 해킹처럼 보입니다.
MDVCPostsListViewController
의 테이블보기에서 선택 사항을 변경하면 MDVCPostDetailViewController
에 선택된 값이 업데이트되도록 어떻게 얻을 수 있습니까? 나는 가깝다고 느낀다. 그러나 무엇이 빠졌는지, 또는 가장 좋은 길은 무엇인지를 확신하지 못한다. 나는 postsListsViewController.postsArrayController.selection
바인딩이 극단적으로 해킹 된 것처럼 느낍니다. 잘하면 더 좋은 방법이 있습니다.
설명을 읽는 대신 코드를 보는 것을 선호하는 사람들을 위해 샘플 프로젝트를 업로드했습니다. 내 사이트에서 가져올 수 있습니다 http://www.secondgearsoftware.com/attachments/stackoverflow_objectcontroller.zip
알았어요. 감사! –