Xcode NSOutlineView:如何将特定单元格置于编辑模式?(editColumn方法未按预期工作)

Xcode NSOutlineView:如何将特定单元格置于编辑模式?(editColumn方法未按预期工作),xcode,cocoa,nstableview,nsoutlineview,Xcode,Cocoa,Nstableview,Nsoutlineview,我有一个NSOutlineView。当我在其中编辑一个单元格并点击回车键时,我希望它正下方的单元格立即进入编辑模式 我想我应该使用controltextdidediting:delegate方法来确定单元格的编辑何时完成,使用editColumn:row:withEvent:select:方法将其下方的单元格置于编辑模式 下面是我粘贴到苹果演示代码项目“DragNDropOutlineView”的“appcontroller.m”中的一个演示方法: -(void)controlTextDidEn

我有一个
NSOutlineView
。当我在其中编辑一个单元格并点击回车键时,我希望它正下方的单元格立即进入编辑模式

我想我应该使用
controltextdidediting:
delegate方法来确定单元格的编辑何时完成,使用
editColumn:row:withEvent:select:
方法将其下方的单元格置于编辑模式

下面是我粘贴到苹果演示代码项目“DragNDropOutlineView”的“appcontroller.m”中的一个演示方法:

-(void)controlTextDidEndEditing:(NSNotification*)通知
{
NSTreeNode*treeNodeJustEdited;
NSInteger IndexOfcCurrentRow=[outlineView selectedRow];
if(indexOfCurrentRow<0)//未选择任何行
回来
TreeNodeJustEdit=[outlineView itemAtRow:indexOfCurrentRow];
NSTreeNode*theRootNode=rootTreeNode;
NSInteger numberOfChildren=[[theRootNode可变ChildNodes]计数];
NSInteger indexOfLastChild=儿童数量-1;
if(indexOfCurrentRow
出于某些原因,这会执行以下操作:

  • 正确高亮显示单元格下方的行 刚刚编辑。但是:
  • 禁止 突出显示,即将其置于灯光下 灰色的
  • 使单元格位于单元格下方 只是编辑,看不见。点击 在该单元格上返回两次表 恢复正常

为了使此方法按预期执行,我缺少了什么?

这里还有另一个问题,它与您的类似

希望是有益的。

- (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];
    }
}