Помощь с простым 5-звездочным рейтингом - PullRequest
1 голос
/ 06 июня 2011

Я установил довольно простой способ применить 5-звездочный рейтинг в XCode, он технически работает, но имеет поведение, которое мне не нравится и которое я хотел бы изменить.Я начал с радиогруппы в XCode, установил пользовательские изображения для состояний включения и выключения, а затем применил IBAction для действия селектора каждого из них.Например, третья звезда (радио) связана со следующим действием:

-(IBAction) star3Press: (id) sender
{
    [star1 setState:1];
    [star2 setState:1];
    [star3 setState:1];
    [star4 setState:0];
    [star5 setState:0];
}

Это отлично работает в первый раз, но если я пытаюсь опуститься вниз, звезда, на которую я нажимаю, тоже выключается.Так, например, если я нажму на звезду № 5, все 5 начнут светиться.Если я затем нажму на звезду 3, звезды 3, 4 и 5 выключатся.Если я снова нажму 3, он снова включится.Я бы предпочел, чтобы при нажатии на звезду 3, когда все 5 звезд были включены, были выключены только звезды 4 и 5. Я предполагаю, что проблема в том, что когда я нажимаю на звезду, сначала вызывается мой IBAction, а затем регистрируетсякоманда, чтобы выключить эту кнопку радио.Есть ли способ изменить это поведение?

1 Ответ

4 голосов
/ 06 июня 2011

Задумывались ли вы, чтобы использовать NSLevelIndicator? Это то, что iTunes использует для контроля звездного рейтинга. Звездные изображения встроены, и вы можете установить свое собственное изображение, если вам это не нравится. Не нужно строить свой собственный.

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

- (IBAction) myLevelIndicatorAction:(id)sender {
    NSInteger currentLevel = [sender integerValue];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...