Добавление границы подпредставления в UITableViewCell динамически - PullRequest
0 голосов
/ 28 января 2012

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

Этот код находится в моем методе cellForRowAtIndexPath:

UIImageView* border = (UIImageView*)[cell viewWithTag:10];
if (border)
    [border removeFromSuperview];

NSInteger sectionRows = [tableView numberOfRowsInSection:[indexPath section]];
NSInteger row = indexPath.row;

if (row != sectionRows - 1) {
    UIImageView* border = [[UIImageView alloc] initWithImage:[[ImageManager sharedManager] imageNamed:@"dashed_border"]];
    [border setFrame:CGRectMake(10, [self tableView:tableView heightForRowAtIndexPath:indexPath], 290, 1)];
    [border setTag:10];
    [cell addSubview:border];
    [border release];
}

Он удаляет подпредставление границы, если оно существует, и еслистрока не является нижней строкой, она вставляет границу в нижней части строки.

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

1 Ответ

1 голос
/ 28 января 2012

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

Это происходит потому, что вы добавляете границу вне границ ячейки. Попробуйте переместить его на 1 пиксель вверх. Как:

[border setFrame:CGRectMake(10, [self tableView:tableView heightForRowAtIndexPath:indexPath] - 1, 290, 1)];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...