2010-12-15 17 views
5

私はのAppKitとのNSDocumentで遊んでいますし、これは?:NSURL→NSImageでは→NSImageView

を私はちょうどこれを書いていないと、画像がnilではないですが、決して任意の画像をロードし、その大きさがされて動作していない理由を私は知りません常にゼロ。 これは、ドキュメントにファイルを読み込むために実装する必要がある正しい方法ですか? 他のライブラリを使って他のファイルを読み込む予定があるので、データ(NSData)ではなくパスが必要です。

今、私はPNG、JPGを読み込もうとしていますが、何も働いていません。 (事前に

- (BOOL) readFromURL:(NSURL *)url ofType:(NSString *)typeName error:(NSError **)outError{ 

    NSImage *image = nil; 
    image = [[NSImage alloc] initWithContentsOfURL:url]; 

    [imageView setImage:image]; 
    [image release]; 

    if (outError != NULL) { 
     *outError = [NSError errorWithDomain:NSOSStatusErrorDomain code:unimpErr userInfo:NULL]; 
    } 
    return YES; 
} 

おかげ

+2

+1を使用する;) – Jakub

答えて

6

ImageViewのは、nibファイルからロードされている場合は、それが設定されていないときreadFromURL:ofType:エラー:が呼び出されますが、イメージをロードしてインスタンス変数に格納してから、windowControllerDidLoadNib:メソッドのimageViewに追加する必要があります。また、エラーを返すのは毎回です。何かがうまくいかない。

- (void)windowControllerDidLoadNib:(NSWindowController *)windowController { 
    [imageView setImage:image]; 
    [image release]; 
    image = nil; 
} 
- (BOOL)readFromURL:(NSURL *)url ofType:(NSString *)typeName error:(NSError **)outError { 
    image = [[NSImage alloc] initWithContentsOfURL:url]; 
    if(!image) { 
     if(outError) *outError = [NSError errorWithDomain:NSOSStatusErrorDomain code:unimpErr userInfo:NULL]; 
     return NO; 
    } 
    return YES; 
} 

NSImage *画像を追加してください。インスタンス変数をヘッダファイルに追加します。

+1

偉大な答え。 "unimpErr"のプレースホルダーエラーは、 "実装されていないエラー"に相当します。これは、開発者がまだそのメソッドを展開していない場合に備えてあります。失敗したイメージを読み込む場合、おそらくココアのNS FileCorrupt コード(正確な列挙名がわからない)のいずれかを使用する方が意味があります。 – NSGod

+0

ありがとうございました;) – nacho4d

6

このようにそれを実行します。

NSImage *image = [[NSImage alloc] initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:url]]]; 
+1

私はMac OS、AppKitを使用しています。したがってUIImageマットはありません。 – nacho4d

+0

が編集されてテストされました。その方法でうまくいくでしょう。 –