NSTableView 调用 editColumn 后失去焦点

问题描述 投票:0回答:1

我有一个 NSTableView,用户单击按钮来添加新行。这将转到 IBAction,该 IBAction 在 NSArrayController 中插入一个对象,然后使用 editColumn:row:withEvent:select: 将新行置于用户的编辑模式。

问题是,一旦 editColumn:row:withEvent:select: 被触发,表视图中的所有行都会变成灰色,即表视图失去焦点。我尝试在调用 editColumn 之前和之后重置第一响应者,但没有任何效果。一旦插入新行并且所有内容都变成灰色,我必须一次选择一行,然后它们的文本再次变成正常(黑色)。

如何以编程方式将行/列设置为编辑模式而不发生这种情况?

-(IBAction)addAttribute:(id)sender
    {
    TKSpecialObject *theObject = [TKSpecialObject new];
    [self.myArrayController insertObject:theObject atArrangedObjectIndex:self.myArrayController.count];
    [self.view.window makeFirstResponder:theTableView];
    [self.myTableView editColumn:0 row:[self.myTableView selectedRow] withEvent:nil select:YES];  
    }

enter image description here

objective-c cocoa nstableview
1个回答
0
投票

@Willeke 在上面的评论中指出,有一个关于此行为的线程 – NSArrayController“添加”函数现在会导致保存的 NSTableView 列出的条目暂时失去焦点。在该线程中,接受的答案指示您在 NSTextFieldCell 中子类化私有方法。但是,我不需要这样做,因为这只在编辑的单元格为空时才会发生。我只是将“untitled”的字符串值添加到绑定到单元格的对象的属性中,并且一切都按预期工作。

-(IBAction)addAttribute:(id)sender
    {
    TKSpecialObject *theObject = [TKSpecialObject new];
    [TKSpecialObject setMyTitle:@"untitled"]; // added this line to fix
    [self.myArrayController insertObject:theObject atArrangedObjectIndex:self.myArrayController.count];
    [self.view.window makeFirstResponder:theTableView];
    [self.myTableView editColumn:0 row:[self.myTableView selectedRow] withEvent:nil select:YES];  
    }
© www.soinside.com 2019 - 2024. All rights reserved.