2011年4月10日日曜日

Cocoa NSOutlineView(3)NSCellカスタマイズ

NSOutlineViewの各行を、アイコン付きで表示してみる。

これはもうFAQと言っていいネタらしく、ググってみたらすぐに答えが出た。NSCellをカスタマイズすればいいらしい。

たどり着いたのは木下誠氏のこのページ。

NSCell

ここにあったソースをコピペしてプロジェクトに追加。そしてdatasourceの
- (id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item {
    return (item == nil) ? @"/" : [item relativePath];
}
 
このメソッドをiconも表示するように以下のように変更した。
- (id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item {
    
    NSString* path;
    NSImage* iconImage;
    
    if(item == nil) {
        path = @"/";
        iconImage = [[NSWorkspace sharedWorkspace] iconForFile:path];
    }
    else {
        path = [item relativePath];
        iconImage = [[NSWorkspace sharedWorkspace] iconForFile:[item fullPath]];
    }
    
    // Set image
    [[tableColumn dataCell] setImage:iconImage];
    
    return path;
    
}

えらそうに書いているけど変更点も木下誠氏のサンプルからコピペ。

これだけでできてしまった。


うーん、いい感じだなー。しかしコピペばっかりだからいざ自分でなにかしようとしたら、全然わかんない、という状態が悲しい。

明日以降はいよいよCocoaバインディングに挑戦することになりそう。さっぱりわかんないんだよなあ、バインディング。(^^;)

0 件のコメント:

コメントを投稿