【问题标题】:NSTableView doesn't increase the number of elements in table?NSTableView 不会增加表格中的元素数量?
【发布时间】:2009-09-08 16:30:23
【问题描述】:

我有一个 NSTableView,它使用 NIB 的控制器对象作为数据源显示。我实现了 NSTableView 非正式协议。

这个 NSTableView 从 Core Data 获取它的值。我启动应用程序,加载我在 XML 中拥有的所有值,然后显示它们。

我的问题是,NSTableView 似乎没有将任何新行添加到表的末尾。如果我在永久存储中没有值的情况下启动应用程序并添加另一个值(添加值可以工作,因为我可以看到它们被保存到 XML),表格视图会简单地忽略新值。

如果我添加一个我知道会出现在表格末尾的值(内容按字母顺序排列),我将看不到新值。

如果我和一个我知道的值不会走到表的末尾,该值会被添加,我会在表上看到它,但表上的最后一个值会被推出并消失。

我注意到 - (int)numberOfRowsInTableView:(NSTableView *)tv 仅在应用程序启动时调用,而不是在我执行 [tableView reloadData] 时调用。是什么导致此事件被触发?我尝试在 tableView 上调用 reloadData 之前手动触发它,但似乎不起作用。

对可能导致这种情况的任何想法?

有没有人遇到过这样的事情?有什么线索吗?

【问题讨论】:

  • 您的问题并不清楚:您是使用绑定还是 NSTableDataSource 协议来填充 NSTableView?你必须选择其中之一。如果你使用 Core Data,你应该使用绑定。
  • 我正在使用 NSTableDataSource 协议。我没有使用绑定,因为在屏幕上显示数据之前我需要做一些魔术。
  • 有什么魔力?我猜它更像是 NSValueTransformer 子类或 NSFormatter 双胞胎之一的域,但如果不知道你在做什么,我不能肯定地说。
  • 我赞同彼得的评论。根据您正在做的“魔术”类型,它应该发生在模型中的某个地方或 NSValueTransformer/NSFormatter 类中。表格数据源不适合任何花哨的东西。

标签: objective-c cocoa nstableview


【解决方案1】:

Alex 的评论让我回顾了代码,特别是 Interface Builder 中的绑定。原来我已经设置了表和我的控制器对象之间的绑定并实现了 NSTableDataSource。

我已经删除了所有绑定,只实现了NSTableDataSource 协议。

【讨论】:

  • 我建议走另一条路。核心数据和绑定旨在协同工作。
猜你喜欢
  • 1970-01-01
  • 2020-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-03
  • 2016-06-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多