ios - 滚动加载新图像时,表格 View 急剧移动

标签 ios objective-c

我有从服务器加载 jSON 数据的自定义类,当加载该数据时,我使用 AFNetworking 为每个单元格加载图像。但是,当我向下滚动到要加载的新图像时,会出现令人讨厌的锐化效果,而不是平滑滚动。有我的方法:

-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

    //Create cell

    static NSString *cellIdentifier = @"cell";

    MyCell *cell = (MyCell *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier];

    if (cell == nil)
    {
        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"MyCellView" owner:self options:nil];
        cell = [nib objectAtIndex:0];
    }

    // Check condition, either we got objects

    if (!isDataLoaded){

        cell.myActivityIndicator = [[UIActivityIndicatorView alloc]
                        initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];

        cell.myActivityIndicator.center=self.view.center;
        [cell.myActivityIndicator startAnimating];
        [self.view addSubview:cell.myActivityIndicator];

        NSLog(@"Current loading");

    }   else {

        // Hide acitivity indicator



        // Set image

//            dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
//                
//                 data = [[NSData alloc] initWithContentsOfURL:[[self.objectsToShow objectAtIndex:indexPath.row]valueForKey:@"low_resolutionImage"]];
//                    UIImage *image = [[UIImage alloc] initWithData:data];
//                
//                    dispatch_async(dispatch_get_main_queue(), ^{
//                        
//                        cell.myActivityIndicator.hidden = YES;
//                        [cell.myActivityIndicator removeFromSuperview];
//                        
//                        [cell.myImageView setImage:image];
//                    });
//                
//            });

        [cell.myImageView setImageWithURL:[[self.objectsToShow objectAtIndex:indexPath.row]valueForKey:@"low_resolutionImage"]];

    }

    return cell;
}

最佳答案

您不希望每次表格单元格即将显示时都下载(异步下载是必须的)图像。相反,您在第一次下载图像后将其保存在数据模型中。之后,您可以简单地从模型中检索图像。我通常使用 NSMutableArray实现模型,因为它更容易添加/删除其元素。

关于ios - 滚动加载新图像时,表格 View 急剧移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34375240/

相关文章:

ios - 用户拖动时导航栏设置色调颜色

ios - 来自 xib 的 addSubview - iOS 8 与 iOS 9

ios - 使用自动布局和约束设置按钮

iPhone App 与服务器连接以下载内容

ios - 来自 for in 数组的变量不会快速显示在我的 Collection View 中

ios - 当 UIAlertController 覆盖屏幕时自动禁用自定义类型的 UIButton

ios - UIScrollView setContentOffset :animated: weird behaviour

objective-c - 在方法中保留变量

iphone - 如何从url中获取json数据

ios - iPhone编程,加载plist数据,访问它