【问题标题】:Unable to change image from UIImageView无法从 UIImageView 更改图像
【发布时间】:2018-12-05 13:09:49
【问题描述】:

我有一个 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"];
            }
        }
    }
}

我不知道为什么图像没有改变。你能发现错误吗?

【问题讨论】:

    标签: ios objective-c uiimageview nsmutablearray


    【解决方案1】:

    在循环外初始化图像对象。

        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];
        }
    

    【讨论】:

      【解决方案2】:

      超级愚蠢的错误。我必须改变这一行:

      UIImageView *view = [dotsImageSliderList objectAtIndex:pagenumber];
      

      到这里:

      UIImageView *view = [dotsImageSliderList objectAtIndex:i];
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-02-16
        • 1970-01-01
        • 1970-01-01
        • 2013-04-24
        • 1970-01-01
        • 1970-01-01
        • 2018-03-23
        相关资源
        最近更新 更多