gpt4 book ai didi

macos - NSTableView 可编辑标题并双击表格单元格

转载 作者:行者123 更新时间:2023-12-03 16:37:07 25 4
gpt4 key购买 nike

实现了一个带有可编辑标题的 NSTableView,如this Stackoverflow question 。除了双击表格编辑单元格之外,一切工作正常。这不再有效。

我怀疑发生这种情况是因为 NSTableView setDoubleAction: 位被设置为自定义方法,然后该方法成为表中所有双击事件的处理程序(原始问题的代码示例如下):

-(void)setupTableHeader:(id)table {
NSArray *columns = [table tableColumns];
NSEnumerator *cols = [columns objectEnumerator];
NSTableColumn *col = nil;

NBETableHeaderCell *iHeaderCell;

while (col = [cols nextObject]) {
iHeaderCell = [[NBETableHeaderCell alloc] initTextCell:[[col headerCell] stringValue]];
[col setHeaderCell:iHeaderCell];
[[col headerCell] setEditable:YES];
[iHeaderCell release];
}
[table setTarget:self];
[table setDoubleAction:@selector(doubleClickInTableView:)]; // < This bit
}

我的问题是,如何恢复编辑表格单元格的双击功能?

谢谢。

最佳答案

在准备问题后不久就找到了答案,并认为这可能是一个问答。

doubleClickInTableView: 方法中,会进行检查以确保单击标题单元格。因此,使用 else 子句扩展该检查并在那里实现 editColumn:row:withEvent:select: 就足够了:

-(void)doubleClickInTableView:(id)sender
{
NSInteger row = [sender clickedRow];
NSInteger column = [sender clickedColumn];

if(row == -1&& column >= 0)
{
NSTableColumn *tableColumn = [[sender tableColumns] objectAtIndex:column];
NSTableHeaderView *headerView = [sender headerView];
YCTableHeaderCell *headerCell = [tableColumn headerCell];

NSWindow *window = [[NSApplication sharedApplication] mainWindow];
id cellEditor = [window fieldEditor:YES forObject:sender];

[headerCell setHighlighted:YES];
[headerCell selectWithFrame:[headerView headerRectOfColumn:column]
inView:headerView
editor:cellEditor
delegate:headerCell
start:0
length:headerCell.stringValue.length];

[cellEditor setBackgroundColor:[NSColor whiteColor]];
[cellEditor setDrawsBackground:YES];
}
// This bit below.
else if(row >= 0 && column >= 0)
{
[sender editColumn:column row:row withEvent:nil select:true];
}
}

关于macos - NSTableView 可编辑标题并双击表格单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17716755/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com