NSTableView / NSOutlineView 中的自定义视图
Custom view in NSTableView / NSOutlineView
我有一个基于视图的 NSOutlineView
,我正在为其中一个列提供自定义视图(NSTableCellView
的子类)。我正在使用以下方式注册此子视图:
let nib = NSNib(nibNamed: "MyMatcherView", bundle: NSBundle.mainBundle())
outlineView.registerNib(nib, forIdentifier: "matcher")
当我调用 outline.makeViewWithIdentifier("matcher")
时,它成功地 returns 我成为了自定义视图的一个实例。耶!
不过,在 Interface Builder 中,我注意到我可以从 matcher
列中完全删除 NSTableCellView
控件(见下文)。
出现两个问题:
- 我假设它在运行时工作,因为对
registerNib()
的调用告诉 table 使用该笔尖,而不是 Interface Builder 定义的笔尖。这是正确的吗?
- 在我提供自定义视图的上下文中,您可以在下面的屏幕截图中看到的
Text Cell
控件是什么。我不能删除它,我也不确定它代表什么。
您可以在 IB 中定义的 table 列中的视图实际上在 sub-NIBs (NIBs-within-a-NIB) 中,并且它们是 pre-registered 基于它们的标识符。所以,是的,当您为给定标识符注册一个新的 NIB 时,您将替换包含 table 视图的 NIB 中的那个。它不会再被使用,所以你可以从那个 NIB 中删除它。
文本单元格是 cell-based table 视图的遗迹。在IB中无法删除,即使通过text-editing.xib文件删除,下次在IB中打开时也会恢复。我不确定为什么 IB 坚持保留它而不只是隐藏它。您应该忽略它(尽管如果您导出本地化字符串,您可能应该在属性检查器中清除它的标题,否则您的翻译人员将无缘无故地被要求翻译 "Text Cell")。
我有一个基于视图的 NSOutlineView
,我正在为其中一个列提供自定义视图(NSTableCellView
的子类)。我正在使用以下方式注册此子视图:
let nib = NSNib(nibNamed: "MyMatcherView", bundle: NSBundle.mainBundle())
outlineView.registerNib(nib, forIdentifier: "matcher")
当我调用 outline.makeViewWithIdentifier("matcher")
时,它成功地 returns 我成为了自定义视图的一个实例。耶!
不过,在 Interface Builder 中,我注意到我可以从 matcher
列中完全删除 NSTableCellView
控件(见下文)。
出现两个问题:
- 我假设它在运行时工作,因为对
registerNib()
的调用告诉 table 使用该笔尖,而不是 Interface Builder 定义的笔尖。这是正确的吗? - 在我提供自定义视图的上下文中,您可以在下面的屏幕截图中看到的
Text Cell
控件是什么。我不能删除它,我也不确定它代表什么。
您可以在 IB 中定义的 table 列中的视图实际上在 sub-NIBs (NIBs-within-a-NIB) 中,并且它们是 pre-registered 基于它们的标识符。所以,是的,当您为给定标识符注册一个新的 NIB 时,您将替换包含 table 视图的 NIB 中的那个。它不会再被使用,所以你可以从那个 NIB 中删除它。
文本单元格是 cell-based table 视图的遗迹。在IB中无法删除,即使通过text-editing.xib文件删除,下次在IB中打开时也会恢复。我不确定为什么 IB 坚持保留它而不只是隐藏它。您应该忽略它(尽管如果您导出本地化字符串,您可能应该在属性检查器中清除它的标题,否则您的翻译人员将无缘无故地被要求翻译 "Text Cell")。