从this question借来的标题,其中一个不重复。在那里看到我的答案,因为那个提问者出了什么问题;我是那个答案的作者,我的问题不是那个。
我有一个包含三列的表视图,其Value绑定绑定到数组控制器的arrangedObjects
的三个属性。数组控制器的contentArray
绑定到我的文档对象的visitationResults
;该数组中的项是模型类(VisitationResult)的实例。我还将数组控制器的selectionIndexes
和sortDescriptors
绑定到我的文档的属性。
我通过几个访问者改变我的财产:
- (void) addVisitationResult:(VisitationResult *)newVisitationResult {
[self insertObject:newVisitationResult inVisitationResultsAtIndex:[self countOfVisitationResults]];
NSLog(@"arrayController arrangedObjects: %@", [arrayController arrangedObjects]);
}
运行NSLog
语句,并确认阵列控制器正在收集和排列我的模型对象。这意味着我正在通过我的财产并获取我的文件的KVO通知(这证明了先前的提问者的问题,即绕过该属性的问题,不是我遇到的问题)。
我在模型对象类的访问器方法中添加了NSLog
语句。其中一个是由数组控制器调用,以便对对象进行排序(该属性是排序键)。阵列控制器不知道的另外两个,永远不会被调用。
因此,我的表格视图仍为空白。
答案 0 :(得分:6)
我发现了问题:这是因为我明确绑定了表视图的selectionIndexes
和sortDescriptors
绑定。
无论如何,这不是必要的:我刚检查过,the documentation说:
selectionIndexes
通常,selectionIndexes会自动绑定到第一个NSTableColumn绑定的NSArrayController。
sortDescriptors
通常,此绑定是自动创建的,绑定到最初绑定的NSTableColumn的NSArrayController的排序描述符。
看起来不仅没有必要,而且绑定这两者中的一个或两个都会破坏表格视图。