NSOutlineViewの項目を編集

テキストを扱うのを前提として。

というわけで、テキストを扱うNSCellを必要がある(NSCellのeditWithFrame:::::より)。画像と同時にテキストを表示したいって場合にはBSLabeledIconCellが適当なんじゃないかと。ただし14行目のBRLabeledIconCellをBSLabeledIconCellに修正必要がある。このクラスをNSOutlineViewで使うには、IB上でNSOutlineViewにNSTextFieldCellをドロップして、カスタムクラスからBSLabeledIconCellを設定するのが手っ取り早い。

で、データソースにoutlineView:setObjectValue:forTableColumn:byItem:を実装する。objectには編集中の文字列が渡されるけれども、NSAttributedString(厳密にはそのコンクリートクラス)が渡されたり、NSString(厳密にはNSCFString)が渡されたりするので、isKindOfClassで判別する必要があるかも。で、このデリゲートメソッドからNSOutlineViewに対してreloadData等を送る必要はないらしく、自動的に更新されるっぽい。

しかしリターンキーを押したら、入力を確定した上で下の項目が選択されるんだけど、これを防ぐにはどうすれば良いんだろう?