本日もけっこう疲れていて気力が湧かず、目もしばしばしてあまり集中力がない状態で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 件のコメント:
コメントを投稿