NSImageView が画像ファイル名からパスを得る ResourcePathTransformer

プロパティリストに画像ファイル名を記述し、それを InterfaceBuilderNSImageView Value Pathバインディングさせたい。

しかし Value Path はパスしか受け付けないため、画像ファイル名をパスに変換する ResourcePathTransformer を作って対処します。


//  ResourcePathTransformer.h
#import <Cocoa/Cocoa.h>


@interface ResourcePathTransformer : NSValueTransformer
{
}

@end
//  ResourcePathTransformer.m
#import "ResourcePathTransformer.h"


@implementation ResourcePathTransformer

- (id)transformedValue:(id)value
{
  if (value) {
    return [[[NSBundle mainBundle] resourcePath] 
            stringByAppendingPathComponent:value];
  }
  return value;
}

@end

これによりファイル名 @"point.png" がパス @"---/Resources/point.png" に自動変換されます。

Mac OS X Cocoaプログラミング 第三版

Mac OS X Cocoaプログラミング 第三版