Я работаю над сценарием, который просматривает массив светодиодных индикаторов UIImageView, которые установлены в числовом порядке и выбираются по тегу. В зависимости от шага (он же номер) он на светодиодном изображении отображается как вкл или выкл. Основная цель этого метода - сделать текущий шаг и отобразить изображение «LED on», вычитая его на единицу, и отобразить изображение «LED off» для предыдущего шага. Таким образом, одновременно должен гореть только один светодиод.
К сожалению, я могу только правильно отобразить изображение "LED on". Все светодиоды в последовательности загораются, но они никогда не выключаются. Мое первое предположение состоит в том, что я не вычитаю NSInterger в правильном направлении. Однако, когда я проверяю журнал, все там, где и должно быть. Если текущий шаг - 2, предыдущий - 1. Не знаю, почему это не работает. Спасибо!
sequencerLocation и previousLocation устанавливаются как свойства.
- (void)clockLoop:(UInt8)seqClockPulse
{
//cast to an int to use in loop
NSInteger stepCount = sequencerSteps;
//increment sequencer on pulse in
sequencerLocation++;
if(sequencerLocation > stepCount)
{
sequencerLocation = 1;
}
//setup previous step location
previousLocation = (sequencerLocation - 1);
if (previousLocation == 0)
{
previousLocation = stepCount;
}
//change led color in led array
for (UIImageView *led in sequencerLEDArray)
{
if(led.tag == sequencerLocation)
{
UIImageView *previousLed = (UIImageView *)[led viewWithTag:previousLocation];
[previousLed setImage:[UIImage imageNamed:@"images/seq_LED_off.png"]];
NSLog(@"Previous: %d", previousLocation);
UIImageView *currentLed = (UIImageView *)[led viewWithTag:sequencerLocation];
[currentLed setImage:[UIImage imageNamed:@"images/seq_LED_on.png"]];
NSLog(@"Current: %d", sequencerLocation);
}
}
}