IKImageBrowserView не связывается должным образом

мой вопрос относится к Interface Builder и IKImageBrowserView, не реализующим привязки, как я ожидал.

У меня есть довольно длинный путь к NSArrayController, содержимое которого я хочу отобразить в IKImageBrowserView.

Это ключевой путь, который я связываю с привязкой шаблона отображения NSTextField к: currentOrder.imagesArray.unvalidatedImages.arrangedObjects.@count AppDelegate. Это отлично работает и дает мне количество непроверенных элементов в массиве изображений, принадлежащих текущему порядку, что и предполагается.

Когда я пытаюсь привязать следующий ключевой путь к IKImageBrowserView content: currentOrder.imagesArray.unvalidatedImages.arrangedObjects AppDelegate, Interface Builder не выдает ошибки, а вместо этого действует так, как будто я ничего не вводил. Когда я возвращаюсь к инспектору, путь к ключу привязки снова пуст.

Однако он регистрирует в консоли следующее: Ignoring exception related to working with bindings: NSUnknownKeyException, [<NSCustomObject> addObserver:<IKImageBrowserView ...> forKeyPath:@"currentOrder.imagesArray.unvalidatedImages.arrangedObjects" ...] was sent to an object that is not KVC-compliant for the "currentOrder" property.

Мой AppDelegate реализует currentOrder как сохраненное @property, и все подразделы также являются @properties. Я могу быть уверен, что эти свойства подходят для KVC, потому что указанный выше NSTextField может без проблем считывать изменения. Интересно, что selectionIndexes IKImageBrowserView может связываться с ...unvalidatedImages.selectionIndexes, а не может только content.

Я реализовал обходной путь, с помощью которого я поместил NSArrayController в свой файл nib и привязал массив содержимого к ...arrangedObjects, а затем привязал IKImageBrowserView к контроллеру массива, но был бы очень рад получить более аккуратное решение или, по крайней мере, узнать, делаю ли я ничего плохого.

Спасибо!


person tobygriffin    schedule 20.07.2010    source источник


Ответы (1)


Пробовали ли вы реализовать методы <IKImageBrowserDataSource> в своем делегате приложения и использовать соединение _dataSource вместо привязки? Это работает для меня, и именно так учебник Apple поможет вам это сделать.

В основном вам нужно реализовать только – numberOfItemsInImageBrowser: и – imageBrowser:itemAtIndex: для предоставления данных, что не так уж плохо. Немного сложнее реализовать класс <IKImageBrowserItem> для переноса ваших данных, но даже это не требует огромных усилий. Учебник, указанный выше, должен очень помочь.

person Dov    schedule 26.02.2011