6

在尝试创建基于视图的表时,它不断调用objectValueForTableColumn函数而不是viewForTableColumn

我已在其设置中将表格视图设置为“基于视图”。但我仍然不能让它调用正确的函数。我查看了苹果示例(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

4

1 回答 1

16

需要检查的几件事:

  • 您是否将NSTableViewdelegate设置为实现NSTableViewDelegate协议的类?(我问是因为 tableView:viewForTableColumn:row:是委托方法,而 tableView:objectValueForTableColumn:row:是数据源方法。)

  • IB中是否设置了任何绑定?(您提到您从现有项目中复制了 nib。)主要检查与NSTableView内容绑定和所提供视图的子视图(通常是文本字段)的绑定。)

  • numberOfRowsInTableView:您是否从 协议中实现该方法NSTableViewDataSource并且它是否返回一个非零整数?

最后,您可以查看文档中关于“以编程方式填充基于视图的表视图”的表视图编程指南章节。

于 2012-09-23T11:08:53.990 回答