Mec*_*cki 14 macos cocoa interface-builder
Apple通常在表格()下面放置+/ -按钮NSTableView,例如在网络或用户和组的系统偏好设置中.见下图:

如何在Interface Builder中直接在我的表下面放置相同的按钮,而无需操作代码中的任何接口元素或继承任何元素类?
Mec*_*cki 36
如果表具有固定宽度,最简单的方法是使用分段控件NSSegmentedControl.首先将其添加到您的视图或窗口:

将其样式更改为Small Square,将模式更改为Select None并将段数增加到4(或者3如果您只需要+,则将其保持为-):

+, - 和其他按钮是AppKit框架(NSAddTemplate和NSRemoveTemplate)的预定义图像,可直接在Interface Builder中使用.例如,您可以按如下方式设置前三个段:

出于演示目的,我-禁用了该段.与大多数其他按钮不同,禁用分段控件的一段仅使图像/文本变暗,它不会更改按钮背景.仅禁用整个分段控件会更改背景(当然会禁用所有段).
当然,应始终禁用最后一个段,否则它将是可单击的并在单击时更改其背景.由于它不包含任何图像或文本,因此在禁用后仍然看起来相同.
切换到大小设置并取消Fixed选中所有段的复选框,除了最后一个,确保检查最后一个:

取消选中Fixed会使分段宽度动态化,这意味着它将始终与内容所需的最小宽度相匹配.
最后将控件直接放在表格下方并调整大小以匹配表格宽度.这是结果:

几乎完美,你不觉得吗?
如果表格宽度是动态的,则事情变得更加困难(例如,表格与窗口大小调整一起调整大小).分段控件不支持自动调整大小,这意味着每次调整表大小时都必须以编程方式更改其最后一个段的宽度.当然,这并不难做,只需要很少的代码,但有一种替代解决方案不需要单行代码.
将段数减少一个,并使用不带标题的渐变按钮(NSButton)替换最后一个段:

它的背景看起来与分段控件完全相同,但它确实支持自动调整以始终匹配表的大小.只有一个问题:它是可点击的,这次禁用它不起作用,因为这会改变背景.而只需将其类型更改为Momentary Change(这意味着应用程序希望在单击按钮时控制UI自身更改):

在正确放置按钮并使其可调整大小之后,结果看起来和以前一样好,但这次桌子可以调整大小,底部的按钮总是很合适.
