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++;
}

上記は、非公式プロトコルを実装するデータ項目のセッター メソッドです。

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

于 2012-07-25T15:59:32.240 に答える