Показаны сообщения с ярлыком NSSlider. Показать все сообщения
Показаны сообщения с ярлыком NSSlider. Показать все сообщения

18 мар. 2014 г.

Badges на иконке Вашего приложения (дополнение) / NSlider and docTile

Дополнение к статье заключается в том чтобы в реальном времени изменять данные в бэйджике на иконке приложения вместе с некими изменениями данных в Вашем приложении.

Нужно добавить в методе - (void)applicationDidFinishLaunching:(NSNotification *)aNotification строчку после [sliderTextLabel setIntValue:[slider intValue]]; :

[[NSApp dockTile] setBadgeLabel:[NSString stringWithFormat:@"%i",[slider intValue]]];

Эта строка проинициализирует начальное состояние числового значения слайдера и выведет его в бейдж.


Также в нашем экшене - (IBAction)sliderChange:(id)sender после строки [sliderTextLabel setIntValue:[slider intValue]]; Вставить ту же строку, что Вы вставляли в - (void)applicationDidFinishLaunching:(NSNotification *)aNotification 

При изменении положения ползунка, данные будут меняться и в нашем бэйдже. Код:

[NSString stringWithFormat:@"%i",[slider intValue]]

приводит целочисленное значение в тип "строка", тем самым обрезает плавающую точку. Если вместо этого написать просто [slider stringValue], то будет отображаться число с плавающей точкой.

10 мар. 2014 г.

NSSlider "ползунок"

Объект NSSlider отображает диапазон значений для чего-то (какого-нибудь контрола) в приложении. Ползунки могут быть вертикальными или горизонтальными полосами или круговыми циферблатами.

Создадим форму и расположим на ней некоторые контролы интерфейса:

Добавим:
- Label;
- Slider.

В Label установим текст со значением 50 (можно любое другое или вообще никакого текста на изменять, далее будет понятно почему). Добавим слайдер, выровняем, и сделаем наши связи со соледующими оутлетами:

IBOutlet NSTextField *sliderTextLabel;
IBOutlet NSSlider *slider;

Также добавим экшен на наш слайдер, который будет срабатывать при изменении ползунка слайдера:

- (IBAction)sliderChange:(id)sender;

В метод applicationDidFinishLaunching добавим следующий код инициализации нашего слайдера и нашего лейбла:

[slider setIntValue:50];
[sliderTextLabel setIntValue:[slider intValue]];

Можно установить любое значение слайдеру при инициализации. Дальше в нашем экшене-методе sliderChange напишем такие строчки кода:

[sliderTextLabel setIntValue:[slider intValue]];

При изменении местоположения ползунка будет меняться значение нашего лэйбла. Но есть один нюанс. Значение в лэйбле устанавливается (текущего значения слайдера) только тогда когда Вы остановили перемещение ползунка. Но нам бы хотелось пойти дальше и сделать более правильно, т.е. чтобы значение лэйбла менялось в реальном времени во время перемещения ползунка слайдера. Для этого нужно в Дизайнере форм пометить слайдер и в Инспекторе аттрибутов в секции Control выставить чекбокс Continuous. Вот и все.