我有一个基于视图的NSOutlineView
我正在为其中一个列提供自定义视图(NSTableCellView
的子类)。我正在使用以下方式注册此子视图:
let nib = NSNib(nibNamed: "MyMatcherView", bundle: NSBundle.mainBundle())
outlineView.registerNib(nib, forIdentifier: "matcher")
当我致电outline.makeViewWithIdentifier("matcher")
时,它会成功返回我的自定义视图的实例。耶!
在Interface Builder中,我注意到我可以完全删除NSTableCellView
列中的matcher
控件(见下文)。
出现两个问题:
registerNib()
的调用告诉表使用该nib,而不是Interface Builder定义的那个。这是对的吗?Text Cell
控件是什么。我无法删除它,我不确定它代表什么。答案 0 :(得分:2)
您可以在表列中的IB中定义的视图实际上位于子NIB(NIB内部的NIB)中,并且它们是根据其标识符预先注册的。所以,是的,当您为给定标识符注册新的NIB时,您将替换包含表视图的NIB中的NIB。它将不再使用,因此您可以从该NIB中删除它。
Text Cell是来自基于单元格的表格视图的遗留物。它无法在IB中删除,即使您通过文本编辑.xib文件删除它,它也会在下次在IB中打开时恢复。我不确定为什么IB坚持要保留它而不仅仅是隐藏它。您应该忽略它(尽管如果您导出字符串以进行本地化,您可能应该在“属性”检查器中清除其标题,否则将要求您的译员翻译“文本单元格”)。