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

最佳答案

尝试使用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

关于cocoa - 除非用户滚动,否则IKImageBrowserView不会刷新,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11586050/

10-11 19:48