我有NSOutlineView
。当我在其中编辑一个单元格并点击返回时,我希望它下方的单元格立即进入编辑模式。
我以为我会使用controlTextDidEndEditing:
委托方法来查找完成单元格编辑的时间,并使用editColumn:row:withEvent:select:
方法将单元格置于编辑模式下。
这是一个演示方法,我粘贴到Apple演示代码项目的“appcontroller.m”中,“DragNDropOutlineView”:
- (void)controlTextDidEndEditing:(NSNotification *)aNotification
{
NSTreeNode* treeNodeJustEdited;
NSInteger indexOfCurrentRow = [outlineView selectedRow];
if (indexOfCurrentRow < 0) //no row selected
return;
treeNodeJustEdited = [outlineView itemAtRow:indexOfCurrentRow];
NSTreeNode* theRootNode = rootTreeNode;
NSInteger numberOfChildren = [[theRootNode mutableChildNodes]count];
NSInteger indexOfLastChild = numberOfChildren - 1;
if (indexOfCurrentRow < indexOfLastChild)
{
[outlineView selectRowIndexes:[NSIndexSet indexSetWithIndex:indexOfCurrentRow+1] byExtendingSelection:NO];
[outlineView editColumn:0 row: indexOfCurrentRow+1 withEvent:nil select:NO];
}
}
由于某种原因,这会做到以下几点:
为了让这种方法按预期执行,我缺少什么?