2012-01-07 1 views
0

Я создал массив изображений. Я хочу, чтобы иметь возможность создать предыдущую кнопку изображения, но у меня проблемы. Это мой предыдущий код кнопки:Слайд-шоу с несколькими изображениями, требующими кнопки предыдущего изображения.

-(IBAction)changeImage:(id)sender 
{ 
    int ptr = 0; 

    if (ptr <= 5) 
    { 
     ptr--; 
     ptr = 5; 
     [imageView setImage:[images objectAtIndex:ptr]]; 
    } 

    NSArray *images = [[NSArray alloc] initWithObjects:@"Americans.png",@"Approach.png",@"Arianny.png",@"Atoms.png",@"Australia.png",@"Average.png",nil]; 

    [imageView setImage:[UIImage imageNamed:[images objectAtIndex:ptr]]]; 
} 
+0

Каким должно быть предыдущее изображение для 1? Это 5? Вы реализовали свою логику очень долго. – AAV

+0

Я использовал цифры в качестве примера. У меня есть массив изображений, настроенных для случайного отображения (без указания порядка). Я хочу, чтобы эта кнопка имела возможность отображать предыдущее изображение, которое в настоящее время было показано (возвращается в некотором смысле). –

ответ

0

Я не знаю, это код, который вы показать (changeImage) должен быть код, который вы хотите использовать для предыдущего изображения, или это просто код, который вы уже намеревались для другой цели - изменить изображение. Но у этого кода есть несколько ошибок.

Область действия переменной ptr находится только внутри блока методов, поэтому она всегда будет установлена ​​в 0, затем уменьшена, а затем установлена ​​на 5. Таким образом, вы всегда будете показывать изображение с индексом 5, когда метод changImage выполняет. Кроме того, если у вас есть два метода, которые относятся к массиву изображений, этот массив должен быть ivar, который вы можете настроить в своем коде инициализации.

Из того, что я могу сказать в вашем вопросе, одна вещь, которую вы хотите сделать, - это изменить изображение на другое случайное изображение из диапазона изображений в массиве images. Вторая вещь, которую вы хотите сделать, - показать изображение, которое было показано ранее.

Для этого вам нужны два метода. Один метод генерирует случайный индекс по диапазону действительных индексов массива изображений. Другой метод показывает изображение, которое было показано ранее.

Таким образом, вам нужно будет установить ivar, который содержит индекс последнего показанного изображения. Первый метод должен будет заменить значение в этом ivar непосредственно перед генерированием нового случайного индекса. Второй (showPrevious) метод будет использовать значение этого 'lastIndex' ivar, чтобы выбрать индекс, который вы хотите вернуть назад.

Если вы хотите вернуться более чем на один шаг предыдущего изображения, а индексы изображений генерируются случайным образом, вам понадобится массив для запоминания последовательности генерируемых случайных индексов. Это немного сложнее, и на основе кода, который вы показали до сих пор для вашего вопроса, вы, вероятно, сначала попробуете его простым и просто сделайте шаг назад. Кроме того, вы не показываете, как вы генерируете случайные индексы. Вам нужно написать этот код, если вы еще этого не сделали.

+0

может предоставить какой-то код того, как я мог бы перейти к предыдущим изображениям ?, потому что это то, что у меня возникают проблемы делает. –