1

我正在开发一个动态创建NSTableColumns. 数据单元格类型可以是复选框、滑块等。以编程方式绑定到所有单元格类型都有效,除了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例如),我可以看到值发生变化,但是使用NSTextFieldCell,它永远不会更新。

4

1 回答 1

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 的绑定在逐个单元格以编程方式设置时,只能以一种方式工作:仅显示数据。就个人而言,我会将其归类为错误...

于 2010-03-31T20:17:59.283 回答