objective-c - viewForTableColumn 未运行(但 objectValueForTableColumn 运行)

标签 objective-c xcode interface-builder nstableview

在尝试创建基于 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/

相关文章:

ios - 如何以多个间隔调用 Background Fetch iOS

objective-c - NSData 给出 NULL

swift - C 语言的 FTDI D2XX API 在命令行控制台上工作,但在 macOS 上由 Xcode 和 Swift 编程构建的应用程序中始终返回零

iOS 6.0模拟器消失

ios - Xcode 不显示崩溃/错误输出

iphone - 将简单的 Obj-C 转换为 Python

swift - Xcode 8 Interface Builder 在将按钮链接到 IBOutlets 时在类名中放置了错误的空格

xcode - 为什么我的应用程序委托(delegate)的 didFinishLaunchingWithOptions 方法在我的 RootViewController :viewDidLoad method? 之后突然被调用

iOS 11 以编程方式禁用按键弹动

objective-c - 将 NSString 中的文本转换为 8 字节 ASCII Hex 等效值,然后存储回 NSString