【发布时间】: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