Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.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
Swift 使用NSIntConfiguration自定义侧栏_Swift_Cocoa_Sidebar_Appkit_Nsoutlineview - Fatal编程技术网

Swift 使用NSIntConfiguration自定义侧栏

Swift 使用NSIntConfiguration自定义侧栏,swift,cocoa,sidebar,appkit,nsoutlineview,Swift,Cocoa,Sidebar,Appkit,Nsoutlineview,在中,您可以使用NSTintConfiguration使用此代码自定义侧栏图标的颜色 func outlineView(_ outlineView: NSOutlineView, tintConfigurationForItem item: Any) -> NSTintConfiguration? { if case let sectionItem as SectionItem = item { /* This outline view uses a type

在中,您可以使用
NSTintConfiguration
使用此代码自定义侧栏图标的颜色

func outlineView(_ outlineView: NSOutlineView, tintConfigurationForItem item: Any) -> NSTintConfiguration? {
  if case let sectionItem as SectionItem = item {
    /* 
       This outline view uses a type called "SectionItem" to populate its top-level sections.
       Here we choose a tint configuration based on a hypothetical `isSecondarySection` property on that type.
     */
    return sectionItem.isSecondarySection ? .monochrome : .default
  }
  // For all other cases, a return value of `nil` indicates that the item should inherit a tint from its parent.
  return nil
}
当我试图在我的应用程序侧边栏上强制添加颜色时,让我们以黄色作为示例

func outlineView(_ outlineView: NSOutlineView, tintConfigurationForItem item: Any) -> NSTintConfiguration? {
    return .init(fixedColor: .systemYellow)
}
它(某种程度上)按预期工作,这意味着未选择的任何行都会按预期进行自定义,但当您选择一行时,SF符号会改变颜色。我以为它是黄色的

这就是它的样子。您可以看到图标的色调颜色确实是黄色的,但前提是您没有选择它们

我想要的是突出显示的行色调颜色与未选择的行相同。就像苹果在他们的应用程序中所做的那样


您将看到绿色强调色行选择突出显示(
NSTableRowView.emphasisted=true
)和白色图标,因为您的大纲视图当前是窗口的第一响应者。如果在大纲视图之外选择其他控件,例如窗口主内容区域中的
NSTextField
,则行选择将更改为非活动外观(
emphasisted=false
)。这与新的色调配置API无关


在大多数情况下,Mail和Finder都会尽力防止侧边栏的大纲视图成为第一响应者,因此它们通常会像第二个屏幕截图中那样处于非活动状态。如果需要更细粒度的控制,您可以通过在大纲视图上设置
refusesFirstResponder=true
,或者通过子类化
NSOutlineView
并重写
acceptsFirstResponder
来近似此行为。

谢谢!使用SF符号的
NSImageView
NSImageView
如何?当您不选择它们时,它们看起来很好,但当您选择它们时,sf符号的颜色会发生变化。行高亮显示很好。我是否需要拒绝
NSTableCellView
的第一响应者?