У меня возникла проблема, связанная с подключением нескольких NSArrayControllers к двум контроллерам представлений. Я хочу синхронизировать выделение в представлении таблицы списка источников, чтобы обновить значения во втором контроллере подробного представления.Выбор привязки для нескольких контроллеров представления в одном оконном интерфейсе
Я использую Cocoa Dev Central Build A Core Data Tutorial в качестве отправной точки, но сломал архитектуру так, что есть NSWindowController, который содержит два NSViewControllers: один для столбцов таблицы слева и один для деталей сообщения справа.
подкласс NSWindowController имеет NSArrayController, который связан с почтовым объектом и только для чтения managedObjectContext аксессору, что указывает на [[NSApp delegate] managedObjectContext]
Я тогда инициализацией два контроллера просмотра в методе windowDidLoad
.
- (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
имеет NSArrayController связанное с почтовым объектом и его управляемым контекстом объекта, связанным с управляемым контекстом объекта контроллера оконного родителя (все через Interface Builder)
MDVCPostDetailViewController
имеет NSObjectController обязан удался контроллер функции окна объектного контекста и объекта содержимого, привязанного к оконному контроллеру через postsListsViewController.postsArrayController.selection
. Это похоже на действительно сумасшедший взлом.
Как это сделать, чтобы изменить выбор в таблице таблиц MDVCPostsListViewController
, обновит выбранные значения в MDVCPostDetailViewController
? Я чувствую, что я близок, но я не уверен, чего не хватает или какой лучший путь. Я чувствую, что привязка postsListsViewController.postsArrayController.selection
чрезвычайно хаки. Надеюсь, что есть лучший способ.
Я загрузил свой образец проекта, который демонстрирует это для тех, кто предпочитает смотреть на код, а не просто читать описания. Вы можете взять его с моего сайта по адресу http://www.secondgearsoftware.com/attachments/stackoverflow_objectcontroller.zip
Это получилось. Благодаря! –