如何强制基于视图的 NSOutlineView 重新加载项目的视图?

How can I force a view-based NSOutlineView to reload the views for an item?

我有一个 datasource/view-based NSOutlineView,它能够更改一行中表示的数据类型,即使实际的 item 对象引用保持不变。发生此突变时,其中一列需要加载不同的 NSTableCellView。突变后我尝试执行以下操作:

[outlineView reloadItem:updatedItem reloadChildren:YES];

调用时,将调用以下 NSOutlineViewDataSource 方法:

-outlineView:isItemExpandable:
-outlineView:child:ofItem:

但是这个方法永远不会被调用:

-outlineView:viewForTableColumn:item:

如何强制 NSTableView 实际重新加载特定项目的视图?

你需要使用

- (void)reloadDataForRowIndexes:(NSIndexSet * nonnull)rowIndexes columnIndexes:(NSIndexSet * nonnull)columnIndexes

确保调用您的 viewForTableColumn 委托方法。