Cocoaはさっぱり!
■ このスレッドは過去ログ倉庫に格納されています
0581579
02/06/05 14:47ID:kDYsDqliNSOutlineViewの場合、横並び一列がデータひとつに対応します。
Finderのリスト表示で言うと、ファイルの場合は名前、作成日、容量等のデータをひとつの単位で管理していますね。
また、フォルダの場合も同様で、名前以外は表示物がないというデータを所有しています。
このひとまとまりを(設計者が)クラスにまとめ、その各々のインスタンスが
引数itemとして渡されます。
さらに、itemにnilが渡されたときは(仮想的な)トップレベルのアイテムだとして処理します。
手順としては、
1,- (int)outlineView:(NSOutlineView *)outlineView numberOfChildrenOfItem:(id)item
でそのアイテムが所有する子供の数を返します。
もちろんこのときitemがnilであれば、(実際に)トップレベルに表示するアイテムの数を返します。
2,- (id)outlineView:(NSOutlineView *)outlineView child:(int)index ofItem:(id)item
で実際にアイテムを登録します。
indexは配列の要素番号のようなものです。
3,- (id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item
これが実際に表示に使われるインスタンスを返す部分です。
itemの中でtableColumnの位置に表示するNSCell(のサブクラス)のインスタンスを返してやればいいわけです。
後は、子供が存在するアイテムのときに outlineView:isItemExpandable:
でYESを返してあげるようにすればrequireなメソッドは出来上がりです。
■ このスレッドは過去ログ倉庫に格納されています