2010-10-27 3 views
0

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

+0

разместим ваш метод cellForRowAtIndexPath. из чего он выглядит, вы неправильно используете ячейки. Или лучше искать SO - здесь есть несколько вопросов. – Vladimir

+1

В вашем вопросе должен быть хотя бы один вопросительный знак :) – willcodejavaforfood

+0

@Vladimir: Я использовал отдельный идентификатор для каждой ячейки. Не помогаю. Я не могу вставить код в качестве его части моей работы \ – humblePilgrim

ответ

3

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

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

- (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; 
} 

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

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

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

+0

это замечательно! Но я сделал одно изменение. Вместо добавления изображения позже я добавил его в imView во время создания. Он все еще работает. Почему вы добавили изображение позже? – humblePilgrim

+0

@Mithun - я добавил изображение позже, предполагая, что каждая ячейка может иметь разные изображения, чтобы иметь возможность повторно использовать любую старую ячейку для любой строки. если все изображения одинаковы, вы действительно можете установить его только один раз при создании ячейки – Vladimir

Смежные вопросы