我正在尝试创建一个简单的NSTableView(仅文本),可以单击单元格视图来编辑文本.这里的所有教程和相关问题都表明这是自动行为,但我无法得到它.
我可以轻松链接我的代理和数据源; 我可以通过编程方式填充所有单元格,并且我可以弄清楚如何处理在编辑时输入的新文本....我只是无法打开文本框进行编辑!
(NST列在IB中标记为可编辑)
谢谢你的任何线索.
小智 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)
在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)