NSTableView editColumn:row:withEvent:select:没有正确选项卡?

时间:2013-08-09 16:01:50

标签: macos cocoa nstableview

如果我使用以下代码开始编辑NSTableView

    [dataTableView editColumn: 0
                          row: 0
                    withEvent: nil
                       select: YES];

表格中的第一个行/列组合现在处于编辑模式。但是,如果我有多个列并且按下选项卡按钮,则编辑器不会切换到下一列。相反,存在编辑模式。

如果我点击第一行/列进入编辑模式,当我点击标签时,字段编辑器会移动到下一列(正如我所料)。

为什么会发生这种情况的任何想法?我如何能够正确地拨打editColumn:row:withEvent:select:来拨打标签?

2 个答案:

答案 0 :(得分:2)

内置的标签行为取决于所选的行,因此只需选择行并编辑列:

[self.tableView selectRowIndexes:[NSIndexSet indexSetWithIndex:rowIndex] byExtendingSelection:NO];
[self.tableView editColumn:0 row:rowIndex withEvent:nil select:YES];

答案 1 :(得分:1)

正如有人在this answer中所说,AppKit Release Notes表示单元格之间的标签应该自动生效。您的tableview委托可能没有实现此方法:

- (BOOL)tableView:(NSTableView *)tableView shouldEditTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row

如果要自定义选项卡行为,则需要使控制器成为文本视图的委托,然后实现:

- (BOOL)textView:(NSTextView *)aTextView doCommandBySelector:(SEL)aSelector {
    if (aSelector == @selector(insertTab:)) {
        ..
    } else if (aSelector == @selector(insertBacktab:)) {
        ..
    }
}