Добавление UIImageView динамически в UITableViewCell - PullRequest
0 голосов
/ 20 августа 2011

Я использую UITableView для отображения некоторой информации о последствиях быстрого вождения: какой будет штраф и т. Д. Я также использую некоторые красные "точки", которые вы получаете в своих водительских правах.Поскольку это может быть от 0 до 6 для каждой строки, я сделал следующее:

- (UITableViewCell *)tableView:cellForRowAtIndexPath:

// Code if no cell is available in the que

// End of that code

UIImage *seniorImage = [UIImage imageNamed:@"ticket_dot.png"];

if (seniorDots == 0) {

} else {
    for (int i = 0; i < seniorDots; i++) {
        UIImageView *seniorImageView = [[UIImageView alloc] initWithFrame:CGRectMake(40.0 + (i * 15.0), 40.0, 15.0, 40.0)];
        seniorImageView.image = seniorImage;
        seniorImageView.contentMode = UIViewContentModeCenter;
        [cell.contentView addSubview:seniorImageView];
        [seniorImageView release];
    }
}

seniorDots - это переменная, которую я получаю из plist-файла.Код работает так, как задумано, но, как вы видите, у меня нет способа их удалить.Таким образом, в первый раз, когда я открываю табличное представление, я вижу ожидаемое представление, но если я прокручиваю снова код, просто продолжаю добавлять UIImageViews в ячейку, не удаляя старые.Как я могу ссылаться на эти точки, чтобы удалить их с экрана перед добавлением новых?

Ответы [ 2 ]

2 голосов
/ 20 августа 2011
 UITableViewCell *cell = (UITableViewCell *)[tableView    dequeueReusableCellWithIdentifier:CellIdentifier];

UIImageView *imgView; 
if(cell == nil)
{
   cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero         reuseIdentifier:CellIdentifier] autorelease];

 imgView = [[UIImageView alloc] initWithFrame:CGRectMake(100,0,100,62)];
[imgView setImage:[UIImage imageNamed:@"img.png"]];
imgView.tag = 55;
[cell.contentView addSubview:imgView];
[imgView release];
} 
else
{
    imgView = (id)[cell.contentView viewWithTag:55];
}
1 голос
/ 20 августа 2011

Вы можете поместить код ниже в свой метод cellForRowAtIndexPath:

// Удалить другие данные

   for (UIImageView *img in cell.contentView.subviews) {
        if ([img isKindOfClass:[UIImageView class]]) {
            [img removeFromSuperview];
        }
    }

Я надеюсь, что это будет полезно для вас. Дайте мне знать, если возникнут какие-либо трудности.

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