在尝试创建基于 View 的表时,它不断调用 objectValueForTableColumn 函数而不是 viewForTableColumn。
我已在其设置中将 TableView 设置为“基于 View ”。但我仍然无法让它调用正确的函数。我看过苹果示例 (tableviewplayground) 的实现,在某些时候甚至复制粘贴了 IB 和函数,仍然没有任何进展。
相关代码:
// Should run
- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
{
return nil;
}
// Gets run
-(id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
{
return nil;
}
两张图片,不确定它们有多大帮助,但仍然如此。 http://imgur.com/a/ix34Q
最佳答案
需要检查的几件事:
您的
NSTableView
是否将其delegate
设置为 实现了NSTableViewDelegate
协议(protocol)? (我问是因为tableView:viewForTableColumn:row:
是一个委托(delegate)方法,而tableView:objectValueForTableColumn:row:
是一个数据源方法。)是否有在 IB 中设置的任何绑定(bind)? (你提到你 从现有项目中复制了 nib。)主要检查绑定(bind) 到
NSTableView
内容绑定(bind)和提供的 View subview (通常是文本字段。)您是否从
NSTableViewDataSource
协议(protocol)并返回一个非零值 整数?
最后,您可以查看文档中关于“以编程方式填充基于 View 的 TableView ”的 TableView 编程指南一章。
关于objective-c - viewForTableColumn 未运行(但 objectValueForTableColumn 运行),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12551574/