Как изменить rowHeight TableViewCell в зависимости от длины строки - PullRequest
0 голосов
/ 24 февраля 2010

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

Я использую следующий код:

//... cellForRowAtIndexPath
if (row == 0) {

    cell = [tableView dequeueReusableCellWithIdentifier:@"affCell"];
    //if (!cell) {
     cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:@"affCell"]autorelease];
     cell.accessoryType = UITableViewCellAccessoryNone;
     cell.selectionStyle = UITableViewCellSelectionStyleNone;
     cell.autoresizingMask = UIViewAutoresizingFlexibleHeight;

     affL = [[UILabel alloc] initWithFrame:CGRectZero];
     affL.textAlignment = UITextAlignmentLeft;
     affL.autoresizingMask = UIViewAutoresizingFlexibleHeight;
     [cell.contentView addSubview:affL];
    //}
    //declaration label
    affL.text = [fDictionary objectForKey:@"aff"];
    affL.numberOfLines = 0;
    [affL sizeToFit];
    affL.frame = CGRectMake(15.0, 10.0, 220.0, affL.frame.size.height);
    CGFloat affLH = affL.frame.size.height;
    [tableView setRowHeight:affLH+30];

Я также использую

//... heightForRowAtIndexPath

return affL.frame.size.height;

Как я могу исправить эту проблему?

Ответы [ 2 ]

0 голосов
/ 24 февраля 2010

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

Поэтому я изменил код на:

//... heightForRow...

NSString *myText = [myDictionary objectForKey:@"affirmation"];

return [myText sizeWithFont:[UIFont systemFontOfSize:12.0f] constrainedToSize:
CGSizeMake(220.0, CGFLOAT_MAX) /* 220 = width of Cell */ lineBreakMode:UILineBreakModeWordWrap].height;

//... cellForRow...

cell = [tableView dequeueReusableCellWithIdentifier:@"affirmationCell"];
if (cell == nil) 
{
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"affirmationCell"]autorelease];
    cell.accessoryType = UITableViewCellAccessoryNone;
    cell.selectionStyle = UITableViewCellSelectionStyleNone;
    cell.autoresizingMask = UIViewAutoresizingFlexibleHeight;
}

cell.textLabel.text = [myDictionary objectForKey:@"myAff"];

return cell;

Но это не работает. Что не так?

0 голосов
/ 24 февраля 2010

В -heightForRowAtIndexPath вы должны измерить строку с требуемым размером шрифта (используя что-то вроде - sizeWithFont: constrainedToSize: lineBreakMode :) и вернуть нужную высоту.

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