Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 如何使NSSystemColorsIDChange的NSTableView自身更新?_Macos_Cocoa_Nstableview_Nsnotificationcenter - Fatal编程技术网

Macos 如何使NSSystemColorsIDChange的NSTableView自身更新?

Macos 如何使NSSystemColorsIDChange的NSTableView自身更新?,macos,cocoa,nstableview,nsnotificationcenter,Macos,Cocoa,Nstableview,Nsnotificationcenter,当我在系统首选项中更改系统高亮显示颜色时,所有应用程序中的大多数Cocoa控件(如NSTextField)都会自动更新自己的显示以使用新颜色 但是,NSTableView没有。它似乎被应用程序启动时使用的高亮颜色卡住了 有办法解决这个问题吗?我可以在NSSystemColorsDidChange的NSWindow中添加一个观察者,当我更改系统颜色时会调用它,但我应该如何处理它?显而易见的事情,比如: contentView?.needsDisplay = true 或: 似乎什么也不做。我尝试

当我在系统首选项中更改系统高亮显示颜色时,所有应用程序中的大多数Cocoa控件(如NSTextField)都会自动更新自己的显示以使用新颜色

但是,NSTableView没有。它似乎被应用程序启动时使用的高亮颜色卡住了

有办法解决这个问题吗?我可以在NSSystemColorsDidChange的NSWindow中添加一个观察者,当我更改系统颜色时会调用它,但我应该如何处理它?显而易见的事情,比如:

contentView?.needsDisplay = true
或:


似乎什么也不做。

我尝试了这个,我的表视图的选择颜色会随着系统颜色的变化而变化。Finder中表格视图的选择颜色并不总是改变。来回切换到另一个窗口可以修复颜色。
setSelectionHighlightStyle
确实
重新加载数据
选择行索引:通过扩展选择:
设置需要显示:
。奇怪。切换窗口对我没有帮助,甚至不会导致控制器重新加载。我想知道我的手机是怎么回事,这让它表现得不一样。我可以确认Finder是相同的:它似乎根本没有得到新的颜色。那些标志似乎对我没有帮助。我已经在做一些会导致它重新加载数据并请求重新显示的事情(比如卸载/重新加载控制器/xib,并重新计算它显示的数据)。而发现者也正遭受着这种痛苦,所以(可能)这不仅仅是我在做的疯狂的事情。它似乎真的在某个地方缓存了NSTableView中的突出显示颜色。(我在它上面设置了一个雷达。)我尝试了这个,我的表视图的选择颜色会随着系统颜色的变化而变化。Finder中表格视图的选择颜色并不总是改变。来回切换到另一个窗口可以修复颜色。
setSelectionHighlightStyle
确实
重新加载数据
选择行索引:通过扩展选择:
设置需要显示:
。奇怪。切换窗口对我没有帮助,甚至不会导致控制器重新加载。我想知道我的手机是怎么回事,这让它表现得不一样。我可以确认Finder是相同的:它似乎根本没有得到新的颜色。那些标志似乎对我没有帮助。我已经在做一些会导致它重新加载数据并请求重新显示的事情(比如卸载/重新加载控制器/xib,并重新计算它显示的数据)。而发现者也正遭受着这种痛苦,所以(可能)这不仅仅是我在做的疯狂的事情。它似乎真的在某个地方缓存了NSTableView中的高光颜色。(我已经在它上面设置了雷达。)
viewsNeedDisplay = true