2015-05-20 2 views
0

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

У меня есть два размера ячеек, один 220 и другой 360.

я установить высоту ячейки во время выполнения с помощью heightForRowAtIndex метода,

, но он не работает для меня.

, когда я прокрутка вниз, высота не установлена, и показывает, как этот enter image description here

и когда я прокрутка вверх, клетка сходящей показать правильную высоту

как этот: enter image description here

здесь мой TableView класс клеток XIB:

enter image description here

, его очень странная проблема, с которой я столкнулся с использованием tableviews.i, пробовал разные решения, но не работал. вот мой код:

//code in celllForRow 



     UIColor * color=[UIColor colorWithRed:102.0/255.0 green:110.0/255.0 blue:124.0/255.0 alpha:1.0]; 
     static NSString *CellIdentifier = @"cell"; 
     FBTransportersEvaluationsCell *cell = (FBTransportersEvaluationsCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
     if (cell == nil) { 
      cell = [FBTransportersEvaluationsCell getInstance]; 

     } 


     if ([[[[evaluationsArray valueForKey:@"evaluationAnswer"]objectAtIndex:indexPath.row]valueForKey:@"message"] isEqual:@""] || [[[evaluationsArray valueForKey:@"evaluationAnswer"]objectAtIndex:0]valueForKey:@"message"]==(id)[NSNull null]) { 

      cell.evaluationAnserSentTimeLabel.hidden=YES; 
      cell.evaluationAnserSentDateLabel.hidden=YES; 
      cell.evaluationAnswerSentByLabel.hidden=YES; 
      cell.evaluationAnswerTextView.hidden=YES; 
      cell.evaluationAnswerSingleLineView.hidden=YES; 
      cell.evaluationResponceBigImg.hidden=YES; 
      cell.evaluationAnswerSentDateImg.hidden=YES; 
      cell.evaluationAnswerSentByTag_.hidden=YES; 
      self.sendEvaluationResponceButton.hidden=NO; 
      // 
     } 
     else 
     { 
      cell.evaluationAnserSentTimeLabel.hidden=NO; 
      cell.evaluationAnserSentDateLabel.hidden=NO; 
      cell.evaluationAnswerSingleLineView.hidden=NO; 
      cell.evaluationResponceBigImg.hidden=NO; 
      cell.evaluationAnswerSentByLabel.hidden=NO; 
      cell.evaluationAnswerTextView.hidden=NO; 
      self.sendEvaluationResponceButton.hidden=YES; 
      cell.evaluationContentBigImage.image=[UIImage imageNamed:@"responce-img.png"]; 
      cell.evaluationAnswerTextView.text=[NSString stringWithFormat:@"\"%@ \" ",[[[evaluationsArray valueForKey:@"evaluationAnswer"]objectAtIndex:indexPath.row]valueForKey:@"message"]]; 
      cell.evaluationAnswerSentByLabel.text=[NSString stringWithFormat:@"%@",[[FBUserManager sharedUserManager]userName]]; 

      NSString * str = [NSString stringWithFormat:@"%@",[[[evaluationsArray valueForKey:@"evaluationAnswer"]objectAtIndex:indexPath.row]valueForKey:@"date_evaluation_answer"]]; 
      NSArray * arr = [str componentsSeparatedByString:@" "]; 
      cell.evaluationAnserSentDateLabel.text=[arr objectAtIndex:0]; 
      cell.evaluationAnserSentTimeLabel.text=[arr objectAtIndex:1]; 

     } 


/// code in heightForRow 


    if ([[[[evaluationsArray valueForKey:@"evaluationAnswer"]objectAtIndex:indexPath.row]valueForKey:@"message"] isEqual:@""] || [[[evaluationsArray valueForKey:@"evaluationAnswer"]objectAtIndex:0]valueForKey:@"message"]==NULL) { 

       return 220; 
     } 
     else 
     { 
      return 360; 



     } 

И в прошлом здесь ссылка 15 секунд видео моего вопроса: Video link

+0

Из видео, кажется, все ваши камеры имеют высоту 360. Похоже, что какой-то вид на белом фоне блокирует верхнюю часть вашей ячейки. Вы можете попытаться установить cell.contentView.backgroundColor или даже backgroundColor таблицы, чтобы увидеть, есть ли там такой блокирующий вид. –

ответ

0

Пожалуйста Установите высоту строки согласно вашему требованию, как показано ниже,

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
     if(condition 1) 
     { 
     return height1; 
     } 
     else 
    { 
     return height2; 
    } 

} 

, а также проверьте свое условие. вы можете сослаться на http://www.raywenderlich.com/87975/dynamic-table-view-cell-height-ios-8-swift.

+0

u не читал вопрос правильно @jashu, я сделал это, что вы попросили меня сделать – Logic

+0

Вам нужно рассчитать высоту ячейки в соответствии с вашим контентом. С помощью - (CGSize) sizeWithFont: (UIFont *) font constrainedToSize: (CGSize) size lineBreakMode: (NSLineBreakMode) lineBreakMode. после этого вы можете получить размер контента. и тогда вы должны использовать этот размер с условием, описанным выше. – Jashu