macos - 如何强制基于 View 的 NSOutlineView 重新加载项目的 View ?

标签 macos cocoa nstableview appkit nsoutlineview

我有一个基于数据源/ View 的 NSOutlineView,它能够更改行中表示的数据类型,即使实际的 item 对象引用仍然存在相同。当发生这种突变时,其中一列需要加载不同的 NSTableCellView。我尝试在突变后执行以下操作:

[outlineView reloadItem:updatedItem reloadChildren:YES];

当它被调用时,将调用以下 NSOutlineViewDataSource 方法:

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

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

-outlineView:viewForTableColumn:item:

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

最佳答案

你需要使用

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

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

关于macos - 如何强制基于 View 的 NSOutlineView 重新加载项目的 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32153509/

相关文章:

swift - 如何使用 Swift 在 Cocoa App 中设置 NSView 的颜色?

objective-c - 在 Cocoa 中获取用户的默认电子邮件地址

objective-c - 覆盖 keyDown : in an NSTableView category disables arrow key handling

ios - 如何使 uitableViewcell 选择在编辑或不编程 swift 3 时有所不同?

Cocoa 绑定(bind)在 NSTableView 中显示 NSDictionary 键

macos - 在 mac 中安装 Homebrew 出现错误

android - Mac 上的 Android 模拟器收到错误的纬度/经度

macos - 通过AppleScript调用Cocoa函数removeItemAtPath

xcode - 从启动守护程序启动带有 GUI 的用户应用程序

iphone - NSTimer - if 语句在计时器内不起作用 - 倒计时器