我正在尝试制作一个简单的NSTableView(仅文本),可以单击单元格视图来编辑文本。这里的所有教程和相关问题都表明这是自动行为,但我无法得到它。
我可以轻松链接我的代理和数据源;我可以通过编程方式填充所有单元格,并且我可以弄清楚如何处理在编辑时输入的新文本。 ...我只是无法打开文本框进行编辑!
(NSTable列在IB中标记为可编辑)
感谢您提供任何线索。
答案 0 :(得分:7)
您可以在Interface Builder中选择文本字段单元格,然后使用属性检查器,向下滚动到标题为“行为”的下拉菜单,然后选择“可编辑”。
仅凭这一点,您就可以双击单个单元格并使它们成为可编辑的TextField。
要使您所做的编辑生效,您还必须从NSTableViewDelegate协议实现以下方法: - (void)tableView:setObjectValue:forTableColumn:row:
像往常一样,此方法必须在您设置为NSTableView对象的委托的对象中实现。
[如果您想要对其进行审核,请参阅代表们的Apple文档](https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CocoaFundamentals/CommunicatingWithObjects/CommunicateWithObjects.html#//apple_ref/doc/uid/TP40002974-CH7-SW18)
答案 1 :(得分: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!
}
}