我的问题涉及Interface Builder和IKImageBrowserView没有像我期望的那样实现绑定。
我有一个相当长的密钥路径来获取NSArrayController,我希望在IKImageBrowserView中显示其内容。
这是我绑定NSTextField的显示模式绑定到的关键路径:
AppDelegate的currentOrder.imagesArray.unvalidatedImages.arrangedObjects.@count
。
这很好,并且给了我属于当前订单的图像数组中未经验证的项目的数量,这是它应该的。
当我尝试将以下关键路径绑定到AppDelegate的IKImageBrowserView的content
:currentOrder.imagesArray.unvalidatedImages.arrangedObjects
时,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在保留@property时实现currentOrder
,所有子键也是@properties。我可以肯定这些属性是KVC好的,因为上面的NSTextField能够毫无问题地读取更改。有趣的是,IKImageBrowserView的selectionIndexes
能够绑定到...unvalidatedImages.selectionIndexes
,只有content
不能绑定。{/ p>
我已经实现了一个解决方法,我在我的nib文件中放置了一个NSArrayController,并将内容数组绑定到...arrangedObjects
,然后将IKImageBrowserView绑定到数组控制器,但非常乐意有一个更整洁的解决方案,或者至少要知道我做错了什么。
谢谢!
答案 0 :(得分:1)
您是否尝试在应用委托中实施<IKImageBrowserDataSource>
的方法,并使用_dataSource
连接而不是绑定?这对我有用,并且Apple tutorial你是如何做到的。
您基本上只需要实现– numberOfItemsInImageBrowser:
和– imageBrowser:itemAtIndex:
来提供数据,这不是太糟糕。稍微棘手的部分是实现一个<IKImageBrowserItem>
类来包装你的数据,但即使这样也不需要大量的努力。上面链接的教程应该有很多帮助。