изображение в расширенном TableViewCell теряется после прокрутки - PullRequest
0 голосов
/ 30 января 2011

Я создаю приложение, в котором у меня много ячеек таблицы (> 300).Я успешно реализовал расширение и свертывание ячеек таблицы.При развертывании отображается изображение, полученное из веб-службы, при щелчке по развернутой ячейке ячейка снова сворачивается, если щелкнуть другую ячейку, свернута предыдущая ячейка и развернута текущая ячейка.Теперь проблема в том, что если пользователь прокручивает представление таблицы с помощью расширенной таблицы ячеек, он работает нормально, но когда он возвращается к нему, изображение теряется, а также есть небольшая проблема с функциональностью (таблица принимает эту ячейку свернутой).

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

PS: каждое изображение отличается в зависимости от значения ячейки, но оно выбирается в другом вызове (не все вместе, т.е. для получения 300 изображений я делаю 300 независимых вызовов).

1 Ответ

0 голосов
/ 12 апреля 2011
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{
    static NSString *CellIdentifier = @"Cell";
    UIImageView * imageView;
    UILabel     * nameLabel;

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

        nameLabel = [[UILabel alloc] initWithFrame:CGRectMake(45.0, 5.0, 245.0, 34.0)];
        nameLabel.font = [UIFont fontWithName:CELL_FONT size:CELL_FONT_SIZE];
        nameLabel.tag = 2;
        nameLabel.backgroundColor = [UIColor clearColor];
        [cell.contentView addSubview:nameLabel];
        [nameLabel release];

        imageView = [[UIImageView alloc] initWithFrame:CGRectMake(5.0, 5.0, 30.0, 30.0)];
        imageView.tag = 1;
        imageView.contentMode = UIViewContentModeScaleAspectFit;
        [cell.contentView addSubview:imageView];
        [imageView release];
    }
    else {
        imageView = (id)[cell.contentView viewWithTag:1];
        nameLabel = (id)[cell.contentView viewWithTag:2];
    }

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