如何在NSTableView中放置和控制复选框?

时间:2015-09-12 00:46:50

标签: macos swift nstableview

我正在寻找一种以编程方式将复选框放在NSTableView的第一列中的方法。我想在Swift中做到这一点。我需要能够读取所有按钮的值,并在有人点击该行时设置按钮。

有一种简单的方法吗?我无法找到它......

2 个答案:

答案 0 :(得分:3)

您需要将表视图设置为基于视图,而不是基于单元格。最简单的方法是使用界面构建器将复选框放入表视图的第一列。它应该是您的文本字段的兄弟。我假设您希望第一列只包含一个复选框,而不是其他任何内容。在这种情况下,您应该隐藏文本字段,以便它不会干扰复选框(单击文本字段的界面构建器中的“隐藏”复选框)。

选项1:创建NSTableCellView的子类,将其命名为MyTableCellViewWithCheckbox,并为其指定@property (nonatomic,strong) NSButton *checkbox;将自定义类字段从NSTableCellView更改为MyTableCellViewWithCheckbox以获取第一列并连接插座。

选项2 :(我还没有测试过,但我认为它应该可行。)将复选框的标记设置为13.要稍后从表格视图单元格中检索复选框,可以使用{{1方法。

接下来,您需要将操作附加到复选框,因此您应该在视图控制器上创建viewWithTag(而不是在MyTableCellViewWithCheckbox上)。在操作方法中,您可以使用tableviews IBAction获取用户刚刚点击的复选框的行索引的方法。新状态可以直接从动作的发送者接收(它是NSButton)。

另外,不要忘记在视图控制器中可能会多次调用rowForView,如果你有一个表视图 - 一次为你实例化的每个表视图单元格(这花了我一些时间来弄清楚) 。)

答案 1 :(得分:3)

我能够通过使用基于Cell的NSTableView来实现这一点。使TableView看起来像这样: Table View in Interface builder

将tableColumn设置为如下所示:

tableCOlumn

将buttonView设置为如下所示:

enter image description here

设置复选框,让func tableView(tableView: NSTableView, objectValueForTableColumn tableColumn: NSTableColumn?, row: Int) -> AnyObject?返回1表示检查,0表示不检查。