无法通过点击使NSTableView可编辑

Joe*_*eds 6 xcode nstableview

我正在尝试创建一个简单的NSTableView(仅文本),可以单击单元格视图来编辑文本.这里的所有教程和相关问题都表明这是自动行为,但我无法得到它.

我可以轻松链接我的代理和数据源; 我可以通过编程方式填充所有单元格,并且我可以弄清楚如何处理在编辑时输入的新文本....我只是无法打开文本框进行编辑!

(NST列在IB中标记为可编辑)

谢谢你的任何线索.

小智 7

您可以在Interface Builder中选择文本字段单元格,然后使用属性检查器,向下滚动到标题为"行为"的下拉菜单,然后选择"可编辑".

仅此一项就可以让您双击单个单元格并使它们成为可编辑的TextField.

要使您所做的编辑生效,您还必须从NSTableViewDelegate协议实现以下方法: - (void)tableView:setObjectValue:forTableColumn:row:

[请参阅Apple Docs了解此功能](https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Protocols/NSTableDataSource_Protocol/Reference/Reference.html#//apple_ref/occ/intfm/NSTableViewDataSource/tableView:objectValueForTableColumn:row :)

像往常一样,此方法必须在您设置为NSTableView对象的委托的对象中实现.

[如果您想要对其进行审核,请参阅代表们的Apple文档](https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CocoaFundamentals/CommunicatingWithObjects/CommunicateWithObjects.html#//apple_ref/doc/ uid/TP40002974-CH7-SW18)


Joe*_*eds 6

在tableView:viewForTableColumn委托方法中,我必须专门设置每个单元格是可编辑的.

经过几周的使用,它似乎没有问题,但我仍然认为必须以某种方式减少费力的方法.

- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {


    NSTableCellView *cellView;
    if( [tableColumn.identifier isEqualToString:@"word"] )
    {
        wordCellView = [tableView makeViewWithIdentifier:tableColumn.identifier owner:self];
        cellView = wordCellView;
        [cellView.textField setEditable:YES]; // Make Cell Editable!
     }
}
Run Code Online (Sandbox Code Playgroud)

  • 你需要在右边返回`cellView`吗? (2认同)