除非用户滚动,否则IKImageBrowserView不会刷新

时间:2012-07-20 19:47:46

标签: cocoa ikimagebrowserview

我们有一个显示一堆图像的IKImageBrowserView。我们在后台异步下载这些图像并将它们缓存到磁盘。然后,我们使用KVC通知IKImageBrowserView imageRepresentation已更改。例如didSetValueForKey:@"ImageRepresentation"。但是,如果用户滚动视图(我们在NSScrollView中嵌入了IKImageBrowserView),IKImageBrowserView似乎只会刷新自己以加载最近下载的图像。为什么会这样?无论如何强制IKImageBrowserView重绘某个单元格或所有可见单元格而不等待用户滚动视图?

1 个答案:

答案 0 :(得分:1)

尝试使用reloadData方法。

    [browser reloadData];

我有类似的情况,我使用IKImageBrowserView来查看正在下载的图像。在我的例子中,我使用占位符图像创建初始图像集,然后下载图像。当每个进来时,我用不同的图像更新数据源条目,增加图像版本号,然后在浏览器上使用reloadData方法。我还关闭了动画,以便用户不会看到整个浏览器重绘,只看到已更新的图像。

- (void) setImage: (NSImage *) image
{

    [img release];
    img = image;
    [img retain];
    imageVersion++;
}

以上是我的数据项的setter方法,它实现了非正式协议。

https://developer.apple.com/library/mac/#documentation/GraphicsImaging/Reference/IKImageBrowserItem_Protocol/IKImageBrowserItem_Reference.html