我想检查我的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是否正在编辑?
答案 0 :(得分:1)
将视图控制器设置为表格视图单元格中文本视图的委托。
然后,当用户触发[control: textShouldBeginEditing:]
protocol method时,您可以设置“isRenaming = YES
”。您还可以在用户完成编辑时(或者在用户界面中点击“完成”或“保存更改”按钮时)设置“isRenaming = NO
”。
答案 1 :(得分:0)
最后,我找到了遗失的案例。
在NSTableView上发生双击事件时,“ tableView:shouldEditTableColumn:row:”函数被调用。
所以,
- (void)tableViewDoubleClicked:(id)sender {
isRenamed = NO;
...
}
它解决了这个问题。
答案 2 :(得分:0)
为什么不检查editedRow
?
let isBeingEdited = yourTable.editedRow != -1
此属性不适用于基于视图的表视图。在基于视图的表视图中,视图负责自己的编辑行为。对于其他表,该值反映正在编辑的行的索引,或者在没有正在进行的编辑会话时为-1。