UIImage в таблице прокрутки замедлений в uitableViewcell - PullRequest
0 голосов
/ 20 июня 2011

Здравствуйте. Я пытаюсь получить изображение профиля пользователя Facebook в таблице cell.image.Но это замедляет прокрутку табличного представления. Затем я использовал Асинхронную загрузку изображения ссылка Но я запутался, как я мог использовать это в методе моей таблицы

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

        static NSString *CellIdentifier = @"Cell";

        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
        if (cell == nil) {
            cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
        }

        cell.textLabel.font = [ UIFont fontWithName:@"Arial" size:10.0];
        cell.textLabel.numberOfLines = 0;

        cell.textLabel.text = [NSString stringWithFormat:@"%@",[(Facebook *)[dummyArray objectAtIndex:indexPath.row] sender]];

        cell.detailTextLabel.text =[NSString stringWithFormat:@"%@",[(Facebook *)[dummyArray objectAtIndex:indexPath.row] post]];

        NSString *get_string = [NSString stringWithFormat:@"%@/picture",[(Facebook *)[dummyArray objectAtIndex:indexPath.row]senderId]];

        AsynchronousImageView *image = [[AsynchronousImageview alloc]init];
[image loadImagewithUrlString:getString];

        FbGraphResponse *fb_graph_response = [fbGraph doGraphGet:get_string withGetVars:nil];

        UIImageView *image_view = [[UIImageView alloc] initWithImage:fb_graph_response.imageResponse];


        cell.imageView.image = image_view.image;



        [image_view release];


        return cell;
    }

Ответы [ 3 ]

4 голосов
/ 20 июня 2011

Замедляется, потому что вы устанавливаете image каждый раз, когда вызывается cellForRowAtIndexPath:.Добавьте изображение в imageView ячейки только внутри блока if (cell == nil).Тогда вы увидите улучшение прокрутки.

0 голосов
/ 20 июня 2011

Вы уверены, что это асинхронное изображение вызывает проблемы?Прокомментируйте асинхронную часть изображения и посмотрите, может быть, это фактическая причина FbGraphResponse.

Я вижу, что вы каждый раз создаете изображение для ответа графика, и это может вызвать замедление.

0 голосов
/ 20 июня 2011
    AsynchronousImageView *image = [[AsynchronousImageview alloc]init];
    [image loadImagewithUrlString:getString];

    FbGraphResponse *fb_graph_response = [fbGraph doGraphGet:get_string withGetVars:nil];

    UIImageView *image_view = [[UIImageView alloc] initWithImage:fb_graph_response.imageResponse];


    cell.imageView.image = image_view.image;

Этот код создает описанную проблему ..... попробуйте этот подход ... после того, как любое изображение загружено, сохраните его в любой временной папке в каталоге документов (сделайте имя вашего изображения таким, чтобы вы могли идентифицировать каждое из них уникальным образом ) .... и когда вам нужно настроить ячейку, просто берите изображение из временной папки каждый раз, когда вызывается метод celForRowAtIndexPath .... не используйте

   UIImageView *image_view = [[UIImageView alloc];

Это не имеет смысла, поскольку вы не используете его (вы просто используете его свойство .image) .... также, если возможно, соберите все свои данные в viewDidLoad таким образом, что вы можете еще больше повысить производительность

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...