UISlider должен иметь диапазон 1-5 и выравниваться по ближайшей выемке.

У меня есть 4 UISlider, которые должны иметь значения от 1 до 5, где 1 — минимальное значение, а 5 — максимальное.

Я настроил слайдеры и назвал их слайдер1, слайдер2, слайд3, слайдер4.

Я также настроил розетки и т. д. и установил минимальные и максимальные значения в конструкторе интерфейсов.

Однако, когда я прокручиваю ползунок, он просто скользит, а не придерживается шкалы от 1 до 5.

Я попытался сделать следующее и с треском провалился, когда увидел это в каком-то другом вопросе SO.

- (IBAction) sliderValueChanged:(id)sender
{

    [sender setValue:((int)((sender getValue] + 2.5) / 5) * 5) animated:NO];

}

ОБНОВЛЕНО: похоже, это работает как решение

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

    NSUInteger index = (NSUInteger)([sender value] + 0.5); // Round the number.
    [sender setValue:index animated:NO];
    NSLog(@"index: %i", index);

 //   NSNumber *number = [numbers objectAtIndex:index]; // <-- This is the number you want.
 //   NSLog(@"number: %@", number);

}

Можете ли вы помочь мне с этим? Я также получаю сообщение об ошибке с функцией getValue выше.


person kratos    schedule 05.02.2013    source источник


Ответы (1)


Objective-C — это не Java, соглашение об именах для геттеров другое. Используйте value вместо getValue (и вообще, почему бы вам не объявить sender как UISlider *?)

person Community    schedule 05.02.2013
comment
@kratos Да, дайте компилятору как можно больше подсказок, у вас обоих будет меньше головной боли. - person ; 05.02.2013
comment
Я обновил свой код выше, и, похоже, он работает... Спасибо. - person kratos; 05.02.2013