我目前正在使用NSOutlineView进行项目...
我当然使用NSCell,我需要能够在单元格中选择文本... 或者至少......阻止细胞的选择(和突出显示)......
我在IB上搜索所有选项,但找不到合适的选项......
有没有办法,无论是否以编程方式阻止选择/突出显示单元格,还是让用户选择单元格内容?
谢谢=)
答案 0 :(得分:2)
与NSCell相关的并不多,也许您希望在代理中实施outlineView:shouldSelectItem:
。
在NSCell上,setEnabled:NO
也可以提供帮助。来自文档:
setEnabled:(BOOL)flag
已禁用的单元格文本更改为灰色。如果单元格被禁用,则无法突出显示,不支持鼠标跟踪(因此无法参与目标/操作功能),也无法进行编辑。但是,您仍然可以以编程方式更改已禁用单元格的许多属性。 (例如,setState:方法仍然有效。)
答案 1 :(得分:0)
尝试设置:
cell.selectionStyle = UITableViewCellSelectionStyleNone;
您也可以尝试覆盖highlightSelectionInClipRect:,但我不完全确定这会有效。
答案 2 :(得分:0)
我们来看一个快速的例子,如下面的大纲视图。共有3列:firstName
,lastName
和fullName
。
在这个特定示例中,假设我们只允许firstName
和lastName
在fullName
(可能来自firstName
和{{1}时可编辑}}) 不是。您可以通过选中或取消选中表列的可编辑复选框,在Interface Builder中进行设置。为此,在其中一个表列(不是标题,但在大纲视图内)单击3次;首先选择lastName
,然后选择NSScrollView
,然后选择NSOutlineView
:
您可以设置如下属性:
这提供了一个开始,为整个列设置默认的可编辑值。如果您需要更多地控制特定行的项值是否可编辑,则可以使用NSTableColumn
委托方法:
outlineView:shouldEditTableColumn:item:
如果要控制大纲视图中的特定行是否可选(例如,您可以阻止选择组项),可以使用#pragma mark -
#pragma mark <NSOutlineViewDelegate>
- (BOOL)outlineView:(NSOutlineView *)anOutlineView
shouldEditTableColumn:(NSTableColumn *)tableColumn
item:(id)item {
if ([[tableColumn identifier] isEqualToString:@"firstName"] ||
[[tableColumn identifier] isEqualToString:@"lastName"]) {
return YES;
} else if ([[tableColumn identifier] isEqualToString:@"fullName"]) {
return NO;
}
return YES;
}
。
outlineView:shouldSelectItem: