Невозможно изменить изображение из UIImageView - PullRequest
0 голосов
/ 26 июня 2018

У меня есть NSMutableArray с некоторыми UIImageView внутри. После действия прокрутки я хочу изменить изображения некоторого UIImageView, но я не могу.

Вот как я впервые запускаю массив:

NSMutableArray *dotsImageSliderList = [[NSMutableArray alloc]init];

for (int i=0; i<totalImages; i++)
{
   UIImageView *dot =[[UIImageView alloc] initWithFrame:CGRectMake(distance,2,5,5)];
   if (i==0)
   {
       dot.image=[UIImage imageNamed:@"dotselected.png"];
   }
   else
   {
       dot.image=[UIImage imageNamed:@"dotunselected.png"];
   }

   [dotsImageSliderList addObject:dot];
}

И вот как я получаю UIImageView и пытаюсь изменить изображения:

-(void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView
{
    [NSObject cancelPreviousPerformRequestsWithTarget:self];
    NSInteger pagenumber = scrollView.contentOffset.x / scrollView.bounds.size.width;
    NSLog(@"%zd", pagenumber);

    if (pagenumber < [dotsImageSliderList count])
    {
        for (int i=0; i<[dotsImageSliderList count]; i++)
        {
            UIImageView *view = [dotsImageSliderList objectAtIndex:pagenumber];
            if (i==pagenumber)
            {
                view.image=[UIImage imageNamed:@"dotselected.png"];
            }
            else
            {
                view.image=[UIImage imageNamed:@"dotunselected.png"];
            }
        }
    }
}

Понятия не имею, почему изображения не меняются. Вы можете заметить ошибку?

Ответы [ 2 ]

0 голосов
/ 26 июня 2018

Супер глупая ошибка. Я должен изменить эту строку:

UIImageView *view = [dotsImageSliderList objectAtIndex:pagenumber];

к этому:

UIImageView *view = [dotsImageSliderList objectAtIndex:i];
0 голосов
/ 26 июня 2018

Инициализация объекта изображения вне цикла.

    NSMutableArray *dotsImageSliderList = [[NSMutableArray alloc]init];
    UIImage * selectedImage = [UIImage imageNamed:@"dotselected.png"];
    UIImage * unselectedImage = [UIImage imageNamed:@"dotunselected.png"];

    for (int i=0; i<totalImages; i++)
    {
       UIImageView *dot =[[UIImageView alloc] initWithFrame:CGRectMake(distance,2,5,5)];
       if (i==0)
       {
           dot.image=selectedImage;
       }
       else
       {
           dot.image=unselectedImage;
       }

       [dotsImageSliderList addObject:dot];
    }
...