带有加号和减号按钮的NSTableView

24

我该如何做类似这样的事情?

截图

在接口构建器库中没有找到合适的对象。

有什么想法吗?


4个回答

40

我发现最好的方法是使用NSSegmentedControl。

将它拖到画布上后,您应该配置其样式:

Style: Small Square
Mode:  Select Momentary

看起来更好了。现在使用“image”字段来设置NSAddTemplateNSRemoveTemplate。确保标签字段为空。

好的,我们有“+”,“-”和一个空段。为了防止最后一个被用户选择,从Segment:下拉菜单中选择它,并关闭Enabled复选框(位于State:标签旁边)。

最后,我们要做的是设置前两个段的width,使它们成为正方形。

  1. 进入Size inspector
  2. 选择Segment 0
  3. 关闭“Fixed”复选框(段应立即自动调整大小以适合图像)
  4. 选择Segment 1并重复第3步
  5. 现在,随着您调整控件的大小,只有最后一个段会改变宽度
  6. 将其放在表格视图的底部并进行调整大小。

享受吧;)


我更喜欢这个答案,因为它可以将一切都保持在一起,而且我可以在不改变外观的情况下禁用第三段。但是如果窗口拉伸控件,如何处理大小调整? - JeremyP
我在窗口的不可调整大小部分使用了它。但是据我所知,让它能够自适应大小真的很具有挑战性。如果你成功实现了,请通过发布另一个答案告诉我,我会为你点赞。 - ratijas
@JeremyP 请查看答案的第二部分https://dev59.com/sGEh5IYBdhLWcg3wTBxc#22586314;您可以将分段控件与NSButton混合使用,以获得理想的外观、行为和自动调整大小。 - Mecki
1
FYI,Mode Select None 不再被称为 None,而是被称为 Momentary - bithavoc
@bithavoc,我已经不再使用XCode/Cocoa了。请随意编辑答案。 - ratijas

11

OSX Yosemite更新

我尝试实现与Mail.app在帐户视图中相同的外观(在我的屏幕截图中的右窗口)。

以下是我通过以下步骤实现了所需的结果:

  1. 添加一个NSSegmentedControl
  2. 添加两个分段,并为每个分段设置图像:
    • 对于+按钮,设置NSAddTemplate
    • 对于-按钮,设置NSRemoveTemplate
  3. 将分段的大小设置为fixed并将值设置为32像素
  4. 按钮旁边的矩形是一个带有Gradient样式的NSButton
  5. 按钮已启用,但Refuses First Responder设置为true,以便它不可点击。

屏幕截图


8
使用带渐变样式的NSButton,对于图像使用系统提供的NSAddTemplate和NSRemoveTemplate。

不错,但是当使用多个渐变按钮时,禁用其中一个会破坏外观。在这种情况下,分段控件的效果更好,因为禁用单个分段只会使文本或图像变暗,而不会改变背景。 - Mecki

3
一份答案建议使用渐变按钮,然而这些按钮不能被禁用,因为这会导致背景改变从而破坏外观。另一个建议使用分段控件,这几乎是完美的,但是分段控件不支持自动调整大小,例如,如果表格宽度是动态的。我的建议是两者的结合。使用分段控件实现实际的按钮,使用渐变按钮填充其余的表格宽度,现在如果按钮宽度也是动态的,那么表格宽度也可以是动态的。

请参阅我对类似问题的答案(带有屏幕截图): https://dev59.com/sGEh5IYBdhLWcg3wTBxc#22586314


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接