我有一个绑定到文本字段的NSSlider来显示滑块给出的值。 一切正常,但我希望NSSlider将“nil”作为minValue发送给对象。
例如,我可以在保存(到属性列表)时将其转换为nil:
if ([myOb intValue] > 0)
[myDict setObject:... forKey:...]
但是我想在应用程序运行时应用相同的行为,只有当“myObj”的值为nil时才会启用其他字段(带绑定)。问题是NSSlider总是返回“0”,并且NSSlider不接受minValue = nil。
提前致谢, 罗南。
答案 0 :(得分:6)
它不接受nil
作为minValue
。如果您查看NSSlider
文档,原因是因为minValue
和maxValue
都定义为double
s,而不是对象类型。
如果要自定义文本字段中显示的值,您可能需要创建NSValueTransformer
子类,以将double
值转换为文本字段的NSString
值。请阅读Value Transformer Programming Guide,了解有关如何执行此操作的详细信息。我过去已经这样做了,所以我可以有一个标签,显示类似于系统偏好设置中的屏幕保护程序滑块的时间值。这很有效。
答案 1 :(得分:-1)
最后我解决了我的问题,将滑块与IBAction相关联:
- (IBAction)slideValue:(id)sender {
if ([mySlide intValue]==0) { //slider
[myNumBox setStringValue:@""]; //textfield
[myValue setValue:nil]; // value
}
}
因此,当滑块等于O时,它会在文本字段中返回“”(nil不起作用)。