1

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

4

1 回答 1

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

于 2012-07-25T15:59:32.240 回答