2013-08-29 2 views
0

я устанавливаю heightForRowAtIndexPath так:IOS heightForRowAtIndexPath, установка высоты для пустых ячеек

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

    /* Contains the string */ 
    NSString *allStrings = [self convertMainData:indexPath]; 


    UIFont *cellFont = [UIFont fontWithName:@"Helvetica" size:17.0]; 
    CGSize constraintSize = CGSizeMake(280.0f, MAXFLOAT); 
    CGSize labelSize = [allStrings sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:NSLineBreakByWordWrapping]; 

    return labelSize.height + 20; 
} 

Это вызывается, когда таблица не пуста, а размер получает рассчитывается правильно, теперь вопрос в том, что если это данные в таблице, все клетки получают их высота изменилась:

http://img716.imageshack.us/img716/3025/yrgt.png

Я попытался проверить для этого в методе делегата

if([tableview cellForRowAtIndexPath:IndexPath] == nil) 
    return 20; 

Но это возвращает ошибку, я также попробовал обернуть ее в! = Nil, но это не имеет никакого эффекта, так как я могу оставить пустые строки на высоте по умолчанию?

+0

Ваша ссылка на изображение недействительна и я вообще не понимаю вашу проблему. Не могли бы вы немного пояснить? –

+1

Что вы подразумеваете под пустыми рядами? – rdelmar

+0

http://img716.imageshack.us/img716/3025/yrgt.png –

ответ

0

Я предполагаю, что ячейка отображает allStrings как ее содержимое.

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

    /* Contains the string */ 
    NSString *allStrings = [self convertMainData:indexPath]; 

    if(allStrings.length == 0) 
    return 20.0f; // return default height. Adjust accordingly 

    UIFont *cellFont = [UIFont fontWithName:@"Helvetica" size:17.0]; 
    CGSize constraintSize = CGSizeMake(280.0f, MAXFLOAT); 
    CGSize labelSize = [allStrings sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:NSLineBreakByWordWrapping]; 

    return labelSize.height + 20; 
} 
+0

По-прежнему ошибочная высота –

+0

@JohnDOe, вам нужно более четко описать, что вы хотите. Неясно, что вы имеете в виду пустые ячейки. – rdelmar

+0

проверьте, если вы задаете свойство rowHeight UITableView где-то еще в коде или xib. Высота пустых ячеек (индексы больше, чем вы возвращаете в numberOfRowsInSection:) берется из этого свойства. – Rajiv

0

То, что вы называете пустым ячеек, на самом деле представляет собой просто линии, нарисованные табличным представлением ниже ваших фактических ячеек. Расстояние этих линий определяется высотой вашей последней ячейки. Поэтому, если вам нужен определенный интервал, вам нужно вставить пустую ячейку в качестве последней строки и вернуть определенную высоту для этой строки в heightForRowAtIndexPath.

Итак, решение, предложенное Максом, будет работать. Вам просто нужно добавить еще одну запись в вашей модели данных в качестве последнего элемента, так что [self convertMainData:indexPath] возвращает пустую строку или nil для этого элемента. Если вам нужна дополнительная информация, пожалуйста, поделитесь информацией о своей модели данных и просмотрите методы источника данных контроллера.

0

Пустой нижний колонтитул стола является ответом. Проверьте это значение answer.

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