我有一个必须是唯一的文本字段,所以我添加了我的自定义NSFormatter
(见下文)
正如您在屏幕截图中看到的那样,格式化程序可以工作,但是我正在使用的连续绑定已损坏,因此例如绑定的文本不再实时更新。
我在这里找到了可能的原因,但我不知道如何解决这个问题并重新启用连续绑定:
...
- 12.如果视图附加了一个 NSFormatter,则该值由 NSFormatter 实例格式化。继续执行步骤 17。
- ...
- 17.更新的值显示在用户界面中。
所以看起来它是故意跳过我们想要的步骤。这很烦人。我尝试了 NSValueTransformer,但将其添加到可编辑的 NSTextField 使其不可编辑。
我的格式化程序
- (BOOL)getObjectValue:(out id *)obj forString:(NSString *)string errorDescription:(out NSString **)error {
if([string isNotEqualTo:@"todo-invalid-value"]){
*obj = string;
NSLog(@"YES");
return YES;
} else {
if(error){
*error = @"ERROR: not allowed";
}
return NO;
}
}
- (NSString *)stringForObjectValue:(id)obj {
return (NSString *)obj;
}
工作验证
请注意,列表项的标题应使用我在文本字段中输入的文本进行更新。