在基于NSTableView的视图中使用编辑模式中的不同视图

时间:2012-02-16 11:33:10

标签: cocoa nstableview

我有一个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]];

}

它不太起作用,代码感觉有点脏。 它必须是一种更好的方法,我似乎无法在文档或在线中找到它。

0 个答案:

没有答案