Obj.C

obj.C:NSIndexPath

NSTreeControllerのクリックした位置を知る方法があることはわかっていたのですが、改めて調べています。

追記:obj.C:NSIndexPathの紐づけ不良に記述したworkaroundを参照。

クリックした位置NSIndexPathが同じfile pathを取ることができれば、問題解決ができます。クリック位置は、[xbTreeCont selectionIndexPath]で得られます。まだ、file pathを取るところまで知恵が回っていません。
iOSはサンプルが見つかったのですが、Cocoaは見あたりませんでした。

IBOutlet NSTreeController *xbTreeCont;

NSIndexPath *winx =[xbTreeCont selectionIndexPath];

それで、NSIndexPathについて調べました。setする方法はわかったのですが、setしたものをバラす方法がまだわかりません。こちらも片方向です。

NSUInteger integer[5] ;
    integer[0] = 1;
    integer[1] = 2;
    integer[2] = 3;
    integer[3] = 4;
    integer[4] = 5;

    NSIndexPath* indexPath;
    indexPath = [NSIndexPath indexPathWithIndexes:integer length:5];
    NSLog(@”1 indexPath=%s %@”,__FUNCTION__,indexPath);

    NSUInteger iInx[5];
    [indexPath getIndexes:iInx];//iInxにコピーする
    iInx[1] = 54321;
    NSLog(@”2  iInx[2]=%lu %lu %lu %lu %lu”,(unsigned long)iInx[0],(unsigned long)iInx[1],(unsigned long)iInx[2],(unsigned long)iInx[3],(unsigned long)iInx[4]);
    NSLog(@”3 indexPath=%@” ,indexPath);

    indexPath = [NSIndexPath indexPathWithIndexes:iInx length:5];
    NSLog(@”4 indexPath=%@”,indexPath);

ログ
1. {length = 5, path = 1 – 2 – 3 – 4 – 5}
2. 1 54321 3 4 5
3. {length = 5, path = 1 – 2 – 3 – 4 – 5}
4. {length = 5, path = 1 – 54321 – 3 – 4 – 5}

Categories: Obj.C, 技術