Привязка NSSlider к NSTextField с нулевым minValue? - PullRequest
1 голос
/ 01 октября 2009

У меня есть NSSlider, связанный с текстовым полем для отображения значения, заданного ползунком. Все работает, но я бы хотел, чтобы NSSlider отправлял объекту nil как minValue.

Например, я могу преобразовать его в ноль при сохранении (в список свойств):

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

Но я хотел бы применить то же поведение, когда приложение работает, потому что некоторые другие поля включены (с привязкой), только если значение "myObj" равно нулю. Проблема в том, что NSSlider всегда возвращает «0», а minValue = nil не принимается NSSlider.

Спасибо заранее, Ронан.

Ответы [ 2 ]

6 голосов
/ 01 октября 2009

Он не примет nil как minValue. Причина, если вы посмотрите на документацию NSSlider, заключается в том, что minValue и maxValue оба определены как double s, которые не являются типами объектов.

Если вы хотите настроить значение, отображаемое в текстовом поле, вы, вероятно, захотите создать подкласс NSValueTransformer для преобразования значений double в значения NSString для текстового поля. Прочтите Руководство по программированию трансформатора значений *1013*, чтобы узнать, как это сделать. Я делал это в прошлом, чтобы у меня была метка, отображающая значения времени, аналогичные ползунку заставки в Системных настройках. Это работает довольно хорошо.

0 голосов
/ 05 октября 2009

Наконец я решил свою проблему, связав слайдер с IBAction:

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

Итак, когда ползунок равен O, он возвращает «» в текстовое поле (ноль не работает).

...