2012-05-03 4 views
3

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

Правильное содержание: https://www.dropbox.com/s/eqsx4p6dmsofrko/Screen%20Shot%202012-05-03%20at%2010.30.11%20AM.png

Содержание крой: https://www.dropbox.com/s/qqelftkc5jzetk5/Screen%20Shot%202012-05-03%20at%2010.30.19%20AM.png

Я создаю все мои клетки здесь:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"ItemCell"; 
    ItemCell *cell = (ItemCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    Item *item = [self.activity objectAtIndex:indexPath.row]; 
    cell.projectLabel.text = item.project; 
    cell.descriptionLabel.text = item.description; 
    cell.timeLabel.text = item.time; 
    cell.timeAgoLabel.text = item.timeAgo; 
    //cell.avatar = [UIImageView item.avatar]; 

    cell.descriptionLabel.numberOfLines = 0; 
    [cell.descriptionLabel sizeToFit]; 

    // remove the right arrow 
    cell.accessoryType = UITableViewCellAccessoryNone; 

    //[self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:0 inSection:0]] withRowAnimation: UITableViewRowAnimationNone]; 

    return cell; 
} 

и использовать это, чтобы изменить высоту ячеек:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"ItemCell"; 
    ItemCell *cell = (ItemCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

    CGSize descriptionHeight = [cell.descriptionLabel.text sizeWithFont:[UIFont boldSystemFontOfSize:18.0f] constrainedToSize:CGSizeMake(265.0f, CGFLOAT_MAX) lineBreakMode:UILineBreakModeWordWrap]; 

    NSInteger height = cell.projectLabel.frame.origin.y + cell.projectLabel.frame.size.height; 
    height += descriptionHeight.height + 30; 

    NSLog(@"height: %d", height); 

    return height; 
} 
+0

Я не вижу фотографии .. – TheNavigat

+0

Извините, теперь необходимо исправить –

+0

* После проверки фотографий * - Странно. Никогда не было такой проблемы. Сколько там клеток? Я имею в виду, что, возможно, это из-за утечки памяти. – TheNavigat

ответ

0

Решение заключалось в том, чтобы захватить текст из файла данных вместо использования выделенной ячейки.

0

Вы пробовали позвонить [self setNeedsDisp лежать], чтобы перекрасить табличный вид?

+0

Я назвал его как на таблице, так и на ячейке , но, похоже, не помогает –

0

Не знаю, почему этот код работает, но вы никогда не создаете ячейку в своем методе tableView:cellForRowAtIndexPath:. Я подозреваю, что это было опущено в вашем вопросе.

Переместить линию [cell.descriptionLabel sizeToFit]; от вашего tableView:cellForRowAtIndexPath: выше этой линии

CGSize descriptionHeight = [cell.descriptionLabel.text sizeWithFont:[UIFont boldSystemFontOfSize:18.0f] constrainedToSize:CGSizeMake(265.0f, CGFLOAT_MAX) lineBreakMode:UILineBreakModeWordWrap]; 

в вашем tableView:heightForRowAtIndexPath:

, а затем вызвать

[cell setNeedsLayout]; 
[cell setNeedsDisplay]; 

После.

+0

Я использую раскадровку с прототипом ячейки и просто повторно использую эту. Даже без sizeToFit у него такая же проблема. Как только ячейка выходит выше дисплея, она разрезает часть содержимого. –

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