Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.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
Objective c NSPredicateEditor:停止绘制背景的行_Objective C_Macos_Cocoa_Nspredicateeditor_Nsruleeditor - Fatal编程技术网

Objective c NSPredicateEditor:停止绘制背景的行

Objective c NSPredicateEditor:停止绘制背景的行,objective-c,macos,cocoa,nspredicateeditor,nsruleeditor,Objective C,Macos,Cocoa,Nspredicateeditor,Nsruleeditor,以下是我的一个应用程序中NSPredicateEditor的图像: 我想做的是阻止类在每行中绘制灰色背景和行与行之间的“分隔线”,在每行中只留下弹出按钮、文本字段和文本。在大量的谷歌搜索和各种各样的黑客攻击之后,我还没有找到一种方法来做到这一点 我知道另一个关于NSPredicateEditor的类似问题,但那个人想绘制自定义的交替行。我希望有人能想出一个窍门,干脆停止背景画 谢谢 不幸的是,没有办法做到这一点:( 我建议您在提交增强请求。为了防止在NSPredicateEditor中绘制分隔

以下是我的一个应用程序中NSPredicateEditor的图像:

我想做的是阻止类在每行中绘制灰色背景和行与行之间的“分隔线”,在每行中只留下弹出按钮、文本字段和文本。在大量的谷歌搜索和各种各样的黑客攻击之后,我还没有找到一种方法来做到这一点

我知道另一个关于NSPredicateEditor的类似问题,但那个人想绘制自定义的交替行。我希望有人能想出一个窍门,干脆停止背景画


谢谢

不幸的是,没有办法做到这一点:(


我建议您在提交增强请求。

为了防止在NSPredicateEditor中绘制分隔线,只需使用这个极其简单的子类(Swift 4):


谢谢戴夫;我已经这么做了。死亡黑洞下还有一个bug报告。@布赖恩bug报告的编号是多少?我会确保AppKit团队得到它,并且不会丢失。编辑:没关系,我找到了:#15147978Hmm。我还没有测试过,但这是一个非常脆弱的方法。你永远不知道苹果什么时候会改变他们的做法nal在操作系统更新中为此类绘制,使你的应用程序损坏。另一方面,Dave DeLong要求AppKit团队进行增强也已经5年了,所以看起来死亡黑洞仍然存在。@Bryan:我不同意你说的这种方法是“超级脆弱的”。显然苹果只绘制了一些l所有其他绘图都是由子视图完成的,这些子视图不受此代码的影响。好的。但他们随时可以决定使用该方法进行其他绘图。如果您将其改写为“不可操作”,则会中断。这是一个分为两部分的问题,因为您无法预测苹果公司的未来动向。@Bryan:我和您一样担心通过使用一个空的
draw
实现来破坏东西。如果苹果决定在这个控件上做一些新的努力(这已经是非常假设的了),您可能会错过一些新的“chrome”。但这不会影响控件的可用性,因为这是由子视图处理的,而子视图不受此
draw
方法的影响。如果我以后错过了新的chrome,我只需通过删除或更新此
draw
方法来更新我的应用程序。
import Cocoa

class PredicateEditor: NSPredicateEditor {
    override func draw(_ dirtyRect: NSRect) {}
}