【问题标题】:View based NSTableView viewForTableColumn:row not called基于视图的 NSTableView viewForTableColumn:未调用行
【发布时间】:2012-10-25 20:36:34
【问题描述】:

我有一个基于视图的NSTableView,它在 IB 中配置为基于视图。它的列标识符也已设置。它的dataSourcedelegate 设置为同一个对象,该对象声称在公共标头中符合两者。我已经验证了这些是在 tableView 从它的笔尖唤醒之后设置的。

根据文档,我实现了-numberOfSectionsInTableView:,它被调用并返回一个非零数字。

但是,-tableView:viewForTableColumn:row:,让我很懊恼的是,它没有,我不知道为什么不。

有谁知道为什么会发生这种情况?我在 Mountain Lion 上运行,我的部署目标也设置为 Mountain Lion。

【问题讨论】:

  • 这是一个委托方法。值得一问:您是否双重确定您的委托仍然设置在 IB 中或在运行时(而不是在运行时在您背后修改)?多年来,我一直是 Cocoa 开发人员,但我仍然被断开连接的网点所困扰。
  • @JoshuaNozzi 是的,我确定。在笔尖上线后和-awakeFromNib 都进行了检查。非零并指向正确的对象。
  • 谢谢,我浪费了几个小时,因为我没有意识到这是一个委托方法,我将委托和数据源分为两个类

标签: cocoa nstableview


【解决方案1】:

这很简单!问题是,即使 tableview 被添加到我的视图层次结构中,它也被剪裁了,所以看不到。 NSTableView 必须做一些检查以查看它是否真的在屏幕上,然后只请求可见行的单元格视图。

因为整个 tableview 本质上是“屏幕外”,它不会请求任何行。

【讨论】:

  • 嘿-整洁。由于尺寸问题或在 IB 中意外拖动视图而没有意识到,这种情况发生在我身上一两次。 :-)
【解决方案2】:

我的 NSTableView 是通过代码而不是 IB 添加的,我通过添加解决了它:

[tableView addTableColumn:[[NSTableColumn alloc]initWithIdentifier:@"columnIdentifier"]]

【讨论】:

    【解决方案3】:

    调试了一段时间后我遇到了同样的问题,当我要删除表视图和新的视图时,我发现是约束在做这个问题 表视图的 SuperView 缺少导致整个问题的约束。

    【讨论】:

    • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 1970-01-01
    • 2012-05-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多