изображения в ячейках таблицы - PullRequest
0 голосов
/ 27 октября 2010

Я добавил uiimageview в качестве подпредставления к моей ячейке, а затем поместил над ним метку, чтобы она выглядела как кнопка. Но когда таблица прокручивается вверх или вниз, изображение, кажется, снова окрашивается. оказывается очень уродливым, так как мое изображение имеет эффект прозрачности, который теряется, как только он выходит из поля зрения и возвращается .???

1 Ответ

3 голосов
/ 27 октября 2010

Хорошо, я попытаюсь угадать, как выглядит ваш код:)

Если изображения рисуются несколько раз, это означает, что вы добавляете их каждый раз, когда табличное представление запрашивает источник данных для ячейки:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView @"SomeID"];
    if (cell == nil) {
        // Create cell
    }
    UIImageView *imView = ... //Create and initialize view
    [cell.contentView addSubview:imView];
    ...
    return cell;
}

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

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView @"SomeID"];
    if (cell == nil) {
        // Create cell
        UIImageView *imView = ... //Create and initialize view
        imView.tag = 1000; // or any other int value
        [cell.contentView addSubview:imView];
    }
    UIImageView *iView = (UIImageView *)[cell.contentView viewWithTag:1000];
    iView.image = ...// set required image
    ...
    return cell;
}

Таким образом, при таком подходе каждый раз, когда ячейка повторно используется представлением таблицы существующего изображенияпредставление заполняется изображением, соответствующим текущей строке.

Я использовал отдельный идентификатор для каждой ячейки.

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

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