我正在寻找一种以编程方式将复选框放在NSTableView的第一列中的方法。我想在Swift中做到这一点。我需要能够读取所有按钮的值,并在有人点击该行时设置按钮。
有一种简单的方法吗?我无法找到它......
答案 0 :(得分:3)
您需要将表视图设置为基于视图,而不是基于单元格。最简单的方法是使用界面构建器将复选框放入表视图的第一列。它应该是您的文本字段的兄弟。我假设您希望第一列只包含一个复选框,而不是其他任何内容。在这种情况下,您应该隐藏文本字段,以便它不会干扰复选框(单击文本字段的界面构建器中的“隐藏”复选框)。
选项1:创建NSTableCellView的子类,将其命名为MyTableCellViewWithCheckbox,并为其指定@property (nonatomic,strong) NSButton *checkbox;
将自定义类字段从NSTableCellView更改为MyTableCellViewWithCheckbox以获取第一列并连接插座。
选项2 :(我还没有测试过,但我认为它应该可行。)将复选框的标记设置为13.要稍后从表格视图单元格中检索复选框,可以使用{{1方法。
接下来,您需要将操作附加到复选框,因此您应该在视图控制器上创建viewWithTag
(而不是在MyTableCellViewWithCheckbox上)。在操作方法中,您可以使用tableviews IBAction
获取用户刚刚点击的复选框的行索引的方法。新状态可以直接从动作的发送者接收(它是NSButton)。
另外,不要忘记在视图控制器中可能会多次调用rowForView
,如果你有一个表视图 - 一次为你实例化的每个表视图单元格(这花了我一些时间来弄清楚) 。)
答案 1 :(得分:3)