绑定到NSTextField Cell不起作用,编辑值重置为默认值

时间:2010-03-30 21:16:26

标签: cocoa cocoa-bindings nstablecolumn nstableviewcell

我正在开发一个动态创建NSTableColumns的Core Data文档应用程序。数据单元格类型可以是复选框,滑块等。除NSTextFieldCell之外,以编程方式绑定到所有单元格类型。

所有NSTextFieldCells都无法绑定,编辑后会返回默认值。无论是否绑定到字符串,数字(应用NSNumberFormatter)或日期(NSDateFormatter已应用),都会发生这种情况。我使用以下格式来执行所有绑定:

NSDictionary *textFieldOpts = [NSDictionary dictionaryWithObjectsAndKeys:@"YES", NSContinuouslyUpdatesValueBindingOption, @"YES", NSValidatesImmediatelyBindingOption, nil];
[aCell bind:@"value" toObject:[[entryAC arrangedObjects] objectAtIndex:0] withKeyPath:@"numberData" options:textFieldOpts];

同样,如果单元格类型不是NSTextFieldCell,则这些语句有效。

我投入-observeValueForKeyPath方法记录值何时更改...以及其他单元格类型(例如NSSliderCell)我可以看到值更改,但使用{{1}它永远不会更新。

1 个答案:

答案 0 :(得分:0)

事实证明我需要实现NSTableView数据源方法setObjectValue来手动从NSTableView(View)获取更改,然后手动设置数组控制器(Model)中的数据,类似于下面的代码:

- (void)tableView:(NSTableView *)aTableView setObjectValue:(id)anObject forTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex {
    [[[entryAC arrangedObjects] objectAtIndex:rowIndex] setValue:(NSNumber *)anObject forKey:@"numberData"];
}

出于某种原因,当以逐个单元为基础以编程方式设置时,对NSTextFieldCells的绑定仅以一种方式工作:仅显示数据。就个人而言,我会把它归类为一个错误......