1

我有一个 NSLider 绑定到文本字段以显示滑块给出的值。一切正常,但我希望 NSSlider 将“nil”作为 minValue 发送到对象。

例如,我可以在保存(到属性列表)时将其转换为 nil:

if ([myOb intValue] > 0)
    [myDict setObject:... forKey:...]

但是我想在应用程序运行时应用相同的行为,因为只有当“myObj”的值为 nil 时才会启用其他一些字段(通过绑定)。问题是 NSSlider 总是返回“0”,并且 NSSlider 不接受 minValue=nil。

在此先感谢,罗南。

4

2 回答 2

6

它不会接受nil作为minValue. 如果您查看NSSlider文档,原因是因为minValuemaxValue都定义为doubles,它们不是对象类型。

如果您想自定义文本字段中显示的值,您可能需要创建一个NSValueTransformer子类来将double值转换NSString为文本字段的值。阅读Value Transformer 编程指南,了解如何执行此操作的详细信息。我过去曾这样做过,这样我就可以拥有一个显示时间值的标签,类似于系统偏好设置中的屏幕保护程序滑块。这工作得很好。

于 2009-10-01T13:44:23.283 回答
-1

最后我通过将滑块关联到 IBAction 来解决我的问题:

- (IBAction)slideValue:(id)sender {
    if ([mySlide intValue]==0) { //slider
        [myNumBox setStringValue:@""]; //textfield
        [myValue setValue:nil]; // value
    }
}

因此,当滑块等于 O 时,它会在文本字段中返回 ""(nil 不起作用)。

于 2009-10-05T14:02:32.313 回答