画像オブジェクトの実装

では、画像オブジェクトの例を紹介しよう。単純にするため、画像のパスを使ってみた。

// データソースのためのクラス
@interface ImageObject : NSObject
{
    // 画像ファイルのパス
    NSString*   path;
}
// プロパティ
@property(assign) NSString* path;
@end
 
@implementation ImageObject
@synthesize path;

// 画像を表す情報として、パスを使用する
- (NSString*)imageRepresentationType
{
    return IKImageBrowserPathRepresentationType;
}

// 画像を表す情報
- (id)imageRepresentation
{
    return path;
}

// 画像の識別子
- (NSString*)imageUID
{
    return path;
}

// 画像のタイトル
- (id)imageTitle
{
    return [path lastPathComponent];
}
@end

ImageObjectというクラスを作成した。プロパティとして、画像のパスを持つ。imageRepresentationTypeメソッドでは、画像のパスを表すIKImageBrowserPathRepresentationTypeを返す。imageRepresentationでは、単にパスを返してやればいい。これで、データソースのための画像オブジェクトの準備が出来た。

画像の並び替え

あとは、データソースとなるクラスで、この画像オブジェクトを作成すればいい。

さらに、ここではデータソースメソッドを1つ追加してみた。imageBrowser:moveItemsAtIndexes:toIndex:である。これは、画像の並び替えをするときに必要となるものだ。

IKImageBrowserView.h

- (BOOL)imageBrowser:(IKImageBrowserView*)browser moveItemsAtIndexes:(NSIndexSet*)indexes toIndex:(NSUInteger)destinationIndex;

これらを実装したものが、次の実行結果だ。デスクトップピクチャのブラウズ表示を行っている。並んでいる順序を変更するところにも注目してほしい。ここにも、リッチなアニメーションが使われている。また、スライダーを使って、サムネイルの大きさの変更にも対応してみた。このあたりの贅沢さが、Leopardらしさを演出している。