Таблица показывает неправильный размер ячейки

в таблице я устанавливаю высоту для ячейки, использующей (heightForRowAtIndexPath) делегата в виде таблицы код:

  -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return  100;
}

но я проверяю размер ячейки в методе делегирования (cellForRowAtIndexPath), а код:

 - (UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
// Dequeue or create a cell
UITableViewCellStyle style =  UITableViewCellStyleDefault;
UITableViewCell *cell = [aTableView dequeueReusableCellWithIdentifier:@"BaseCell"];
if (!cell) 
    cell = [[UITableViewCell alloc] initWithStyle:style reuseIdentifier:@"BaseCell"] ;

cell.textLabel.text = [NSString stringWithFormat:@"Cell %d", numberOfItems - indexPath.row];
    NSLog(@"%f",cell.frame.size.height);
 return cell;
  }

когда я печатаю ячейку значения (кадр ячейки) на консоли, давая мне 44.00.why это происходит, даже я устанавливаю высоту ячейки. Пожалуйста, объясните мне и что делать, чтобы получить ячейку oh height 100. заблаговременно

На самом деле, я хочу сделать табличное представление пользовательского типа, которое поддерживает другую ориентацию вида, и это универсальное приложение, поэтому лучше будет вызывать размер ячейки для проверки каждый раз (iphone/ipad, diff orintation).... PLZ помочь мне выполнить требование

Ответ 1

Если ячейка отображается правильно, и правильно я имею в виду высоту 100 пикселей, как вы написали в своем tableView:heightForRowAtIndexPath:, я уверен, это потому, что вы просите высоту ячейки в неправильном место: ячейка только что была init'd с методом init по умолчанию, поэтому возвращаемая высота является стандартной по умолчанию, 44 пикселя, как подсказки nslog в вашей консоли, при рендеринге делегата устанавливает правильную высоту, возвращенную из вашего метода, и все настроено правильно.

У меня была эта проблема несколько месяцев назад, по некоторым причинам мне нужно было знать высоту ячейки в методе tableView:cellForRowAtIndexPath:, я вышел с обходным решением для этого: я сохранил все значения rowHeights в NSArray, так как они были динамическими и разными по строкам в соответствии с их содержанием.

Я вышел с чем-то вроде

CGFloat height = [[heightsData objectAtIndex: indexPath.section] objectAtIndex: indexPath.row];

Ответ 2

Установлен ли ваш делегат для UITableViewDelegate?

Попытайтесь сначала поместить в свой tableView:heightForRowAtIndexPath: метод регистрации, чтобы определить, установлен ли ваш делегат.

Ответ 3

Привет, друзья dev дали объяснение

  NSLog(@"%f",[self tableView:tableView heightForRowAtIndexPath:indexPath]);