表视图不根据绑定更新 - 第二部分

时间:2009-12-20 01:31:12

标签: cocoa macos cocoa-bindings nstableview nsarraycontroller

this question借来的标题,其中一个重复。在那里看到我的答案,因为那个提问者出了什么问题;我是那个答案的作者,我的问题不是那个。

我有一个包含三列的表视图,其Value绑定绑定到数组控制器的arrangedObjects的三个属性。数组控制器的contentArray绑定到我的文档对象的visitationResults;该数组中的项是模型类(VisitationResult)的实例。我还将数组控制器的selectionIndexessortDescriptors绑定到我的文档的属性。

我通过几个访问者改变我的财产:

- (void) addVisitationResult:(VisitationResult *)newVisitationResult {
    [self insertObject:newVisitationResult inVisitationResultsAtIndex:[self countOfVisitationResults]];
    NSLog(@"arrayController arrangedObjects: %@", [arrayController arrangedObjects]);
}

运行NSLog语句,并确认阵列控制器正在收集和排列我的模型对象。这意味着我正在通过我的财产并获取我的文件的KVO通知(这证明了先前的提问者的问题,即绕过该属性的问题,不是我遇到的问题)。

我在模型对象类的访问器方法中添加了NSLog语句。其中一个是由数组控制器调用,以便对对象进行排序(该属性是排序键)。阵列控制器不知道的另外两个,永远不会被调用。

因此,我的表格视图仍为空白。

1 个答案:

答案 0 :(得分:6)

我发现了问题:这是因为我明确绑定了表视图的selectionIndexessortDescriptors绑定。

无论如何,这不是必要的:我刚检查过,the documentation说:

  

selectionIndexes

     

通常,selectionIndexes会自动绑定到第一个NSTableColumn绑定的NSArrayController。

     

sortDescriptors

     

通常,此绑定是自动创建的,绑定到最初绑定的NSTableColumn的NSArrayController的排序描述符。

看起来不仅没有必要,而且绑定这两者中的一个或两个都会破坏表格视图。

相关问题