gpt4 book ai didi

cocoa - 绑定(bind)到 NSTextField 单元格不起作用,编辑值重置为默认值

转载 作者:行者123 更新时间:2023-12-03 17:26:56 32 4
gpt4 key购买 nike

我正在开发一个动态创建 NSTableColumns 的核心数据文档应用程序。数据单元格类型可以是复选框、 slider 等。以编程方式绑定(bind)到所有单元格类型都可以,但 NSTextFieldCell 除外。

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

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,它永远不会更新。

最佳答案

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

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

出于某种原因,当以编程方式逐个单元格设置时,与 NSTextFieldCells 的绑定(bind)只能以一种方式工作:仅显示数据。就我个人而言,我会将其归类为错误......

关于cocoa - 绑定(bind)到 NSTextField 单元格不起作用,编辑值重置为默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2548812/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com