Image Array IBAction для просмотра следующего изображения в массиве - PullRequest
0 голосов
/ 27 марта 2011

Благодаря @JFoulkes у меня есть приложение, которое показывает первое изображение в массиве при нажатии следующей кнопки.Однако, когда я нажимаю на него снова, он не показывает следующее изображение в массиве.Это заставляет меня поверить, что мой IBAction для следующей кнопки не совсем верен.

Вот код, который у меня пока есть ...

В моем .h файле я объявил:

IBOutlet UIImageView *imageView;
NSArray *imageArray;
NSInteger currentImage;

И я также добавил:

-(IBAction) next;

В файле .m у меня есть:

-(void) viewDidLoad;
{
imageArray = [[NSArray arrayWithObjects: 
                [UIImage imageNamed:@"1.png"], 
                  [UIImage imageNamed:@"2.png"], 
                  nil] retain];
}

Это мой IBAction, который когда-либо показывает только первое изображение в массиве (1.png) и при повторном нажатии не меняетUIImageView ко второму изображению массива (2.png):

-(IBAction)next {

 if (currentImage + 1 == [imageArray count])
        currentImage = 0;
    UIImage *img = [imageArray objectAtIndex:currentImage];
    [imageView setImage:img]; 
   currentImage++;
}

Основываясь на коде, как я могу изменить IBAction для успешной итерации по изображениям в массиве после любого щелчка?

Ответы [ 3 ]

0 голосов
/ 27 марта 2011

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

Правильная логика приращения будет выглядеть примерно так:

- (void)next {
    currentImage++;
    if (currentImage >= imageArray.count) currentImage = 0;
    UIImage *img = [imageArray objectAtIndex:currentImage];
    [imageView setImage:img];
}
0 голосов
/ 17 декабря 2013

Создайте массив изображений, назовите его «images», инициализируйте целое число «i».
В представлении создайте imageView и две кнопки (далее и далее),
Используйте этот код для действия кнопки,

-(void)nextButton:(id)sender
{
if (i < (array.count-1))
{
    i=i+1;
     imageView.image = [images objectAtIndex:i];
}
}

-(void)previousButton:(id)sender
{
if(i >= 1)
{
    i=i-1;
    imageView.image=[images objectAtIndex:i];
}
}
0 голосов
/ 27 марта 2011

Вам необходимо удалить

currentImage = 0;

Это означает, что первое изображение всегда будет загружено

Вам необходимо добавить проверку, чтобы увидеть, больше ли currentImage, чем массив изображений:

if (currentImage +1 < [imageArray count])
{
    currentImage++;
    UIImage *img = [imageArray objectAtIndex:currentImage];
    [imageView setImage:img]; 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...