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