我有一个NSTableView
,其中包含一个NSTableCellView
列,可以说有一个图标,名称和一个可选日期。
编辑行时,我想用简单的NSTextField
替换整个视图,我将对该文本进行一些解析并提取该可选日期(如果存在)。
我的问题是,您将如何实施此编辑机制?
我尝试在tableView:viewForTableColumn:row
中返回不同的视图,例如:
- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
{
BOOL isSelected = [tableView isRowSelected:row];
if (isSelected)
{
NSView *view = [tableView makeViewWithIdentifier:@"editor" owner:self];
....snip....
return view;
}
else
{
TaskView *view = [tableView makeViewWithIdentifier:@"view" owner:self];
....snip....
return view;
}
}
然后每当所选行发生更改时,尝试请求刷新该行。
- (void)tableViewSelectionDidChange:(NSNotification *)aNotification
{
NSTableView *table = [aNotification object];
NSUInteger rowIndex = [table selectedRow];
[table reloadDataForRowIndexes:[NSIndexSet indexSetWithIndex:rowIndex]
columnIndexes:[NSIndexSet indexSetWithIndex:0]];
}
它不太起作用,代码感觉有点脏。 它必须是一种更好的方法,我似乎无法在文档或在线中找到它。