NSOutlineView
単一のアイテム プロパティを変更し、最初は[myOutlineView reloadData]
.
試してみ [myOutlineView reloadItem: myOutlineViewItem]
ましたが、呼び出さ- (NSView *)outlineView:(NSOutlineView *)ov viewForTableColumn:(NSTableColumn *)tableColumn item:(id)item
れないため、データが更新されません。
-(void)reloadOutlineViewObject
{
//[myOutlineView reloadData]; //Reload data just fines but is ressource-hungry
NSLog(@"%d",[myOutlineView rowForItem:myOutlineViewItem]; //Making sure my object is an item of the outlineView, which it is !
[myOutlineView reloadItem:myOutlineViewItem];
}
ここで何か不足していますか?
アップデート
コメントで指摘されているように、私の OutlineView はビューベースです。
更新 2
いくつか試してみると、リロードしているオブジェクトが第 2 レベルのオブジェクト (オブジェクト ツリーを参照) であり、呼び出しreloadItem:firstLevelObject reloadChildren:YES
が機能することがわかりました。
第 1 レベルの object でのみ reloadItem: を呼び出すことができる可能性はありますか? 私の場合、それは非常に非効率的です(2レベルのアイテムが1つしかなく、2番目のレベルがたくさんあります)!
nil ->firstLevelA ->secondLevel1
->secondLevel2
->firstLevelB ->secondLevel3
->secondLevel4
NSOutlineView をサブクラス化reloadItem:
し、その間に書き直そうとします。
更新 3
まず、Cocotron の NSOutlineViewを調べてみたところ、reloadItemを上書きするために記述する必要があるコードはかなり重いものになると感じました。誰でも確認できますか?