У меня есть следующие настройки:NSArraycontroller selectionIndexes привязки
Окно, которое имеет SplitView, в котором я показываю I NSCollectionView в виде слева и DetailView в правильном виде. Оба представления настроены в отдельных xib. Кроме того, у меня есть Datacontroller (класса NSArrayController), который управляет изменяемым массивом NSMutableDictionaries (moviesForChoice). DataController настроен как делегат приложения. Объекты кино в массиве имеют такие свойства, как (название, сюжет, жанр и т.д.)
до сих пор так хорошо ...
В XIb для NScollectionview я связан свойство контента NSArraycontroller моей datacontroller по применению .delegate.moviesForChoice CollectionView обращается к массиву control.errrangedObjects и arraycontroller.selectionIndexes. Это прекрасно работает, содержимое отображается, и выбор отлично работает в коллекции (мой collectionviewItem отображает цвет выделения)
В xib для detailView я хочу отображать информацию для выбранного объекта в коллекции. Поэтому я также добавил arraycontroller для xib, связал арифм содержимого с Application.delegate.moviesForChoice и связал поля NSText в представлении, например. arraycontroller.selection.name
Приходит моя проблема: каждый раз, когда я открываю окно с двумя xibs, my collectionview отображает все фильмы, которые для выбора правильно, а detailview отображает информацию для 1-го объекта в моем представлении коллекции. Всякий раз, когда я нажимаю на другой фильм в коллекцииView, res. элемент отображает цвет выделения, но detailView не обновляется.
Мое понимание этого было бы в том, что DataController не информирован об обновлениях в selectIndexes и поэтому не может инициировать обновление в detailView. Поправьте меня, если я ошибаюсь ...
Чтобы исправить это я пытался связать свойство selectionIndexes из arraycontroller в CollectionView XIb к Application.delegate.moviesForChoice.selecionIndexes, но это не удалось с: addObserver: forKeyPath: варианты : context:] не поддерживается. Ключевой путь: selectionIndexes
я мог себе представить, что это означает, что datacontroller не KVO соответствует моему массиву 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];
}
Итак, где я не права? Как правильно привязать к selectIndexes?
Вы очень благодарны за помощь! M