У меня есть следующие настройки:
Окно, которое имеет splitView, в котором я отображаю I NSCollectionView в левом представлении и detailView в правом представлении.Оба представления настроены в отдельных XIB.Кроме того, у меня есть Datacontroller (класса NSArrayController), который управляет изменяемым массивом NSMutableDictionaries (moviesForChoice).DataController устанавливается как делегат приложения.Объекты фильма в массиве имеют такие свойства, как (имя, сюжет, жанр и т. Д.)
пока все хорошо ...
В XIB для NScollectionview я связал свойство содержимого NSArraycontroller смой контроллер данных через Application.delegate.moviesForChoice. CollectionView обращается к массивамcontroller.arrrangedObjects и arraycontroller.selectionIndexes.Это прекрасно работает, содержимое отображается, и выделение отлично работает в представлении коллекции (мой collectionviewItem отображает цвет выделения)
В xib для detailView я хочу отобразить информацию для выбранного объекта в представлении коллекции.Поэтому я также добавил arraycontroller в xib, привязал массив содержимого к Application.delegate.moviesForChoice и связал поля NSTextfield в представлении, например, с arraycontroller.selection.name
Вот моя проблема: каждый раз, когда я открываю окнос двумя xibs мое представление коллекции отображает все фильмы, которые являются для выбора правильно, и подробное представление отображает информацию для 1-го объекта в моем представлении коллекции.Всякий раз, когда я нажимаю на другой фильм в коллекции, просмотрите Res.item отображает цвет выделения, но detailView не обновляется.
Насколько я понимаю, DataController не информируется об обновлениях в selectionIndexes и поэтому не может инициировать обновление в detailView.Поправьте меня, если я ошибаюсь ...
Чтобы исправить это, я попытался привязать свойство selectionIndexes массива controltler в xib collectionView к Application.delegate.moviesForChoice.selecionIndexes, но это не удалось с помощью: addObserver: forKeyPath:Параметры: контекст:] не поддерживается.Ключевой путь: selectionIndexes
Я мог бы предположить, что это означает, что контроллер данных не совместим с KVO для моего Array moviesForChoice, но я реализовал следующие методы для него:
-(void)insertObject:(NSDictionary *)dict inMoviesForChoiceAtIndex:(NSUInteger)index {
[moviesForChoice insertObject:dict atIndex:index];
}
-(void)removeObjectFromMoviesForChoiceAtIndex:(NSUInteger)index {
[moviesForChoice removeObjectAtIndex:index];
}
-(void)setMoviesForChoice:(NSMutableArray *)a {
moviesForChoice = a;
}
-(NSArray*)moviesForChoice {
return moviesForChoice;
}
-(NSUInteger)countOfMoviesForChoice
{
return [moviesForChoice count];
}
- (void)addMovieForChoiceObject:(Movie *)anObject
{
[moviesForChoice addObject:anObject];
}
Так где же янеправильно?Как правильно привязать к выделенным индексам?
Ваша помощь очень ценится!M