0

我想检查我的 NSTableView 是否正在编辑。

我尝试使用tableView: shouldEditTableColumn: row:tableView: setObjectValue: forTableColumn: row:函数。例如:

- (BOOL)tableView:(NSTableView *)tableView shouldEditTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
     isRenaming = YES;
     return YES;
}

- (void)tableView:(NSTableView *)tableView setObjectValue:(id)object forTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
     isRenaming = NO;

     ...

}

但是,即使我没有尝试编辑 tableview,也会调用tableView: shouldEditTableColumn: row:函数。

因此,有时,isRenaming 保持为 YES。

如何知道 NSTableView 是否在编辑中?

4

3 回答 3

1

将您的视图控制器设置为表格视图单元格中文本视图的委托。

然后可以设置“isRenaming = YES用户触发时[control: textShouldBeginEditing:]协议方法” 。您还可以isRenaming = NO在用户完成编辑时设置“”(或者当他们单击 UI 中的“完成”或“保存更改”按钮时)。

于 2012-12-08T14:12:33.560 回答
0

最后,我找到了丢失的案例。

" tableView: shouldEditTableColumn: row: " 函数在 NSTableView 发生双击事件时被调用。

所以,

- (void)tableViewDoubleClicked:(id)sender {
       isRenamed = NO;
       ...
}

它解决了这个问题。

于 2013-01-06T04:22:28.427 回答
0

为什么不只是检查edited​Row

let isBeingEdited = yourTable.edited​Row != -1

此属性不适用于基于视图的表视图。在基于视图的表格视图中,视图负责它们自己的编辑行为。对于其他表,该值反映正在编辑的行的索引,如果没有正在进行的编辑会话,则为 –1。

于 2017-03-22T02:12:37.483 回答