我有一个NSTableView
,我想禁用行选择。
表视图的列绑定到NSArrayController
,并且数组的内容确实显示在表视图中。
如何使用bindings
?
答案 0 :(得分:23)
我认为你需要使用TableViewDelegate并实现
- (NSIndexSet *)tableView:(NSTableView *)tableView
selectionIndexesForProposedSelection:(NSIndexSet *)proposedSelectionIndexes
答案 1 :(得分:15)
虽然之前的答案有效,但这是我更喜欢使用的另一种选择:
- (BOOL)tableView:(NSTableView *)aTableView shouldSelectRow:(NSInteger)rowIndex
{
return NO;
}
答案 2 :(得分:13)
我认为
- (BOOL)selectionShouldChangeInTableView:(NSTableView *)aTableView
{
return NO;
}
优于
- (NSIndexSet *)tableView:(NSTableView *)tableView selectionIndexesForProposedSelection:(NSIndexSet *)proposedSelectionIndexes
答案 3 :(得分:7)
Swift 4.0
func tableView(_ tableView: NSTableView, shouldSelectRow row: Int) -> Bool {
return false
}
答案 4 :(得分:1)
作为后人的一个注释......
如果声明selectionIndexesForProposedSelection,那么将忽略shouldSelectRow函数。万一你想知道我为什么我对edSelectRow的编辑没有效果......
答案 5 :(得分:0)
使用绑定:
在绑定的情况下,您可以将布尔值与Enabled绑定。 binding inspector
如果样本中的值为true,则它将是可选的,否则将不是。 这样,当通过绑定完成所有其他工作时,我们不需要仅使用委托来禁用选择。
答案 6 :(得分:0)
使用绑定:
另一种方法是在与表视图的“属性检查器”中的“选择”相对应的复选框列表中选择“空”。默认情况下,这不会选择任何行。
除此之外,将突出显示选项设置为“无”。
答案 7 :(得分:0)