2011年5月29日日曜日

Cocoa NSTreeControllerを調べる(2)

昨日は運動会とその反省会のためプログラミングどころではなく、ビールをがぶ飲みして帰宅後即ベッドに倒れ込む。

本日もけっこう疲れていて気力が湧かず、目もしばしばしてあまり集中力がない状態で1日過ごす。しかし2,3日プログラミングから離れるとあっという間に多くのことを忘れるので多少無理してでもCocoaに触れておいた。

本日はNSTreeController、およびNSTreeNodeについて調べた。

書けたコードはこれだけ。
-(void)awakeFromNib{
    NSArray *mountedVols = [[NSWorkspace sharedWorkspace] mountedLocalVolumePaths]; 
 NSMutableArray *roots=[NSMutableArray array];
    if ([mountedVols count] > 0)
        
 {
  for (NSString *element in mountedVols){
            Node* node=[[Node alloc]init];
            NSString *volName=[[NSFileManager defaultManager] displayNameAtPath:element];
            [node setNodeTitle:volName];
            [node setNodeIcon:[[NSWorkspace sharedWorkspace] iconForFile:element]];
            NSTreeNode* treeNode=[NSTreeNode treeNodeWithRepresentedObject:node];
       
            [roots addObject:treeNode];
            [node release];
        }
  [treeController setContent:roots]; 
 }
}

コンテンツ用のNodeクラス(名前とiconだけ)を用意して、それをNSTreeNodeに格納、それをMutableArrayに追加して、NSTreeControllerにsetContentってなんだかすごく冗長なんだけど、いいのかなあこんなんで。
MutableArrayをクラスのメンバにして、InterfaceBuilderでContentに指定したほうがいいか。
とりあえずこれでこんな風な表示になる。


/homeと/netをどうやって消すのかな、とか、この後Childをどうやって指定していくのかな、とか、明日以降への疑問が山積み。

0 件のコメント:

コメントを投稿