iOS, управляющая значением ползунка и значением текстовой метки с помощью шагового двигателя

У меня уже есть ползунок, который управляет выводом текстовой метки.

-(IBAction)mySlider:(UISlider *)sender
{
    _myTextLabel.text = [NSString stringWithFormat:@"%i", (int) sender.value];
}

Однако я также хочу, чтобы степпер мог изменять положение ползунка. Итак, если ползунок установлен на 50, а текстовая метка говорит 50, я хочу, чтобы шаговый двигатель увеличивался до 51, 52, 53 и т. Д. Кто-нибудь знает код для этого? Спасибо!


person jake9115    schedule 06.05.2013    source источник
comment
Какой у Вас вопрос?   -  person rmaddy    schedule 06.05.2013
comment
Итак, если я правильно это читаю, вы в значительной степени хотите, чтобы UISlider обновил метку, а затем степпер обновил ползунок?   -  person user2277872    schedule 06.05.2013
comment
Да, это правильно, и мой вопрос в том, какой код для этого ... В принципе, если пользователь пытается выбрать конкретное число, он может использовать ползунок как грубую настройку, а затем использовать инкремент, чтобы получить точное число   -  person jake9115    schedule 06.05.2013


Ответы (1)


Вам нужно будет сохранить ссылку на UISlider. Сделайте обработчик для UIStepper с событием valueChanged.

Некоторые настройки, которые необходимо выполнить как для шагового двигателя, так и для слайдера

Установите минимальное и максимальное значение для шагового двигателя и ползунка равными 0 и 100 соответственно. Установите размер шага шагового двигателя равным 1. Установите одинаковое значение по умолчанию для обоих шаговых двигателей и ползунка.

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.slider.minimumValue = 0;
    self.slider.maximumValue = 100;

    self.stepper.minimumValue = 0;
    self.stepper.maximumValue = 100;
    self.stepper.stepValue = 1;

    self.slider.value = 10;
    self.stepper.value = 10;

}

- (IBAction)stepperValueChanged:(UIStepper *)sender {

    [self.slider setValue:sender.value];

    self.myTextLabel.text = [@((int)sender.value) stringValue];

}

- (IBAction)sliderValueChanged:(UISlider *)sender {

    [self.stepper setValue:sender.value];

    self.myTextLabel.text = [@((int)sender.value) stringValue];
}
person Anupdas    schedule 06.05.2013
comment
Спасибо за этот код, но у меня есть быстрый вопрос для новичков: как мне сделать ссылку на UISlider? Каждый раз, когда я создаю метод для ползунка, я не могу ссылаться на них за пределами их фигурных скобок {}, и я не знаю, как еще указать на них - person jake9115; 06.05.2013
comment
все, что вам нужно сделать, это внутри вашего .h файла сделать @property (неатомный, сохранить) UISlider * ‹sliderVar›; между концом и}, а затем в вашем .m файле, прямо под реализацией ‹className› type synthesize ‹sliderVar›; и это создаст используемые функции получения / установки, чтобы вы могли использовать их за пределами {}. реализация и синтезировать оба @ перед ними - person user2277872; 06.05.2013
comment
Просто подключите элементы управления из IB, дайте элементам управления свойство с IBOutlet, чтобы соединить их. Вышеуказанные настройки шага, минимума, максимума и шага могут быть установлены из самого IB. - person Anupdas; 06.05.2013
comment
Обратите внимание, что если вы хотите, чтобы ваш слайдер и шаговый двигатель синхронизировались, вам нужно будет обновлять противоположный при каждом изменении одного из них. (т.е. при изменении ползунка обновите шаговый двигатель и наоборот.) - person lnafziger; 06.05.2013
comment
@ jake9115 Я полностью обновил ответ. Пожалуйста, посмотрите это. - person Anupdas; 06.05.2013