При прокрутке в таблице ячейки меняются местами - PullRequest
0 голосов
/ 26 марта 2012
#import "UIImageView+AFNetworking.h"

Когда я прокручиваю свою таблицу. Клетки меняются местами. Как будто он не знает, что такое первая клетка.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:kCellIdentifier];

    if(indexPath.section == 0 )
    {
        Recipe *dish = [_recipes objectAtIndex:indexPath.row];
        cell.textLabel.text = dish.user;
        cell.imageView.image = _imageView.image;
        return cell;
    }
    else if (indexPath.section == 1 || indexPath.section == 2)
    {
        Recipe *dish = [_recipesExtra objectAtIndex:indexPath.row];
        cell.textLabel.text = dish.title;
        [cell.imageView setImageWithURLRequest:[NSURLRequest requestWithURL:[NSURL URLWithString: dish.url]] 
                              placeholderImage:nil 
                              success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) {
                                           [tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationNone];
                                       } 
                              failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) {
                                       }];
        return cell;
    }
    else
    {
        return nil;
    }


}

Я уверен, что моя ошибка в reloadRowsAtIndexPaths, но я не знаю, как это исправить.

1 Ответ

1 голос
/ 27 марта 2012

Я создал новое свойство, в котором я могу сохранить изображение, поэтому при перезагрузке он просто берет «сохраненное» изображение, поэтому ему не нужно загружать изображение из Интернета.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:kCellIdentifier];

    if(indexPath.section == 0 )
    {
        Recipe *dish = [_recipes objectAtIndex:indexPath.row];
        cell.textLabel.text = dish.user;
        cell.imageView.image = _imageView.image;
        return cell;
    }
    else if (indexPath.section == 1 || indexPath.section == 2)
    {
        Recipe *dish = [_recipesExtra objectAtIndex:indexPath.row];
        cell.textLabel.text = dish.title;
        if (dish.image) {
            cell.imageView.image = dish.image;
        } 
        else 
        {
            [cell.imageView setImageWithURLRequest:[NSURLRequest requestWithURL:[NSURL URLWithString: dish.url]] 
                                  placeholderImage:nil 
                                           success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) {
                                               dish.image = image;
                                               [tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationNone];
                                           } 
                                           failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) {
                                           }];

        }

        return cell;
    }
    else
    {
        return nil;
    }
}
...