NSArrayController在NSTableView中显示正确的行数,但不显示实际数据

时间:2014-12-29 07:46:04

标签: objective-c nstableview nsarraycontroller

我尝试在NSTableView中显示的数据是特定本地目录中的文件列表。

在代码中我有一个方法A,它访问目录并循环遍历文件,通过addObject:将包含每个文件详细信息的NSMutableDictionary添加到NSMutableArray,并返回该数组。这些细节不是模型的实例变量或属性,每个都只是一个NSString,其值在运行时确定。

单独的方法B调用方法A,并循环返回的数组,通过addObject:将每个项目添加到我的NSArrayController。

在我的.xib文件中,我有一个NSArrayController,它绑定到我的代码中的NSMutableArray实例变量,其中存储了该特定本地目录中文件的所有信息。

我还将NSTableView中每个表列的值绑定到NSArrayController的相关模型键路径。

正确运行应用程序会显示NSTableView中的行数(该特定本地目录中的正确文件数)。但是,每个表格列中显示的文本(在所有表格单元格中都显示在每个单独的表格单元格中)只是"表格查看单元格"。

我已经使用NSLog确认向NSArrayController添加对象也会更新它绑定的NSMutableArray实例变量。我还可以随机查看存储在实例变量中的对象,并通过与每个表列的绑定中指定的相同模型键路径访问该文件的详细信息 - 但NSTableView不显示该信息。

有关导致此问题的原因的任何线索?

编辑:我还尝试通过reloadData直接刷新NSTableView,但没有成功。

如果它是相关的,NSArrayController上的NSMutableArray实例变量只能由NSArrayController填充。换句话说,我不会直接在代码中向该数组添加对象。

2 个答案:

答案 0 :(得分:2)

此案例中的问题最终成为NSTableView的“内容模式”设置,该设置在“属性”检查器中指定。

默认设置显然是“基于视图”,但需要是“基于单元格”。在做出这个改变和重建之后,瞧!它奏效了。

答案 1 :(得分:1)

问题似乎是,您的表格视图并不令人耳目一新。所以使用下面的代码行: -

[self.arrController rearrangeObjects];