2017-01-31 12 views
0

Я в колее .. Bagging для рук помогает ..Переключение снимков с использованием UISwitch и NSMutableArray

Код я работаю, как это:

После того, как переключатель на, отображает первый и затем появляется второе изображение при выключении. если переключатель включен и выключен три раза, появляется третий снимок и четвертое изображение, когда выключатель выключен. Ожидается, что эти процессы будут повторяться пять раз. Я помещал изображения в массив. Как я могу использовать NSMutableArray и UISwitch для оживления моего кода ...?

Это мои испытания:

-(IBAction)switchAction:(id)sender { 

    if(_switchClick.isOn == YES) 
    { 
     NSMutableArray* pictureList = [NSMutableArray arrayWithObjects:[UIImage imageNamed:@"songHae.png"], [UIImage imageNamed:@"pai.png"], nil]; 
     [_imageFrame setImage:[pictureList objectAtIndex:0]]; 

    } 
    else 
    { 
     [_imageFrame setImage:[UIImage imageNamed:@"lion.png"]; 
    } 
} 

ответ

0

Определение списка изображений вне обработчика switchAction, а также переменная отслеживания currentPictureIndex.

int currentPictureIndex = 0; 

Тогда в обработчике вы можете сделать это:

[_imageFrame setImage:[pictureList objectAtIndex:currentPictureIndex++]]; 
if (currentPictureIndex >= pictureList.count) { 
    currentPictureIndex = 0 
} 

Это сделает ваши изменения изображения на каждом изменении состояния кнопки.

+0

спасибо, миллион! –

0

Во-первых, объявлен массив вне функции, так что не нужно инициализировать его при каждом включении/выключении коммутатора, а также необходимо инициализировать с большим количеством изображений (10 изображений), как вы хотите сделать это пять раз с разными изображений.

int currentPictureIndex = 0; 
int numberOfTries = 0; 
-(IBAction)switchAction:(id)sender { 

if(_switchClick.isOn == YES) 
{ 
    [_imageFrame setImage:[pictureList objectAtIndex:currentPictureIndex]]; 
    numberOfTries++; 

} 
else 
{ 
    [_imageFrame setImage:[pictureList objectAtIndex:currentPictureIndex+1]]; 
} 
if(numberOfTries%3 == 0) 
{ 
    currentPictureIndex = currentPictureIndex+2; 
} 
else if(pictureList.count==currentPictureIndex+2) 
{ 
    currentPictureIndex = 0; 
    numberOfTries = 0; 
} 
} 
+0

держите вас в моем большом уважении! –