2015-01-13 2 views
0

У меня есть UITextViews в UITableViewCells. Я хочу сделать, чтобы ячейка соответствовала textView Если ячейка содержит textView. Я могу сделать оператор if для каждой ячейки и вернуть размер textView (у меня более 1 ячейки с textView), как я начал в коде ниже, но я уверен, что есть другой способ сделать это.Динамически заданный размер UITableViewCell с UITextView

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if (indexPath.section == 1 && indexPath.row == 0) { 
     return myTextview.frame.size.height + 40; 
    } 
    return 44; 
} 

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

+0

являются вы используя UITableViewCell или пользовательскую ячейку? – user1244109

+0

Я использую статические ячейки –

+0

Хорошо, в этом случае вы можете использовать ту же логику, что и в 'cellForRowAtIndexPath', где вы решаете, должна ли ячейка содержать textView. Если это невозможно, объясните, почему – user1244109

ответ

-1

вы всегда можете сделать это в классе клеток, объявить метод и назовите его, например,

layoutCellByString:(NSString *) stringContent, измерить и отрегулировать высоту ячейки

и объявить еще один getCellHeight вызов метода в классе клеток и возвращение self.frame.size.height;

и heightForRowAtIndexPath, вы можете сделать это:

YourCellClassName *cell = (YourCellClassName *)[self tableView:self.tableView cellForRowAtIndexPath:indexPath]; 

return [cell getCellHeight]; 

вы должны вызвать layoutCellByString в cellForRowAtIndexPath для того, чтобы сделать эту работу

пс: извинение за бассейн английского, кстати.

0

сначала решить, если ячейка, состоящая из UITextView или not.if да в зависимости от размера TextView дают высоту строки. (Но убедитесь, что ваш добавления TextView к просмотру содержимого ячейки)

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    for (UIView *tempView in [[tableView cellForRowAtIndexPath:indexPath].contentView subviews]) 
    {  
     if (tempView isKindOfClass:[UITextView Class]) 
     {   
      return tempView.frame.size.height + 40; 

      //(or) for dynamic cell height 
      //CGSize Size= [tempView.text boundingRectWithSize:CGSizeMake(200, 1000000) 
                options:NSLineBreakByWordWrapping | 
                NSStringDrawingUsesLineFragmentOrigin 
                  attributes:@{ 
         NSFontAttributeName :[UIFont fontWithName:@"Helvetica" size:12] 
                     }  
                 context:nil].size; 
      //return Size.height; 
     } 
    }  
    return 44; 
} 
+0

Когда я возвращаю myTextView.frame ... Не все они называются myTextView? –

+0

будет автоматически выполняться для каждой ячейки, если ячейка имеет текстовое представление в это время, только кадр textview возвращается, else, который возвращает 44 –

+0

. То, что я хочу сказать, это не каждый textView, называемый myTextView, некоторые являются ячейкой. TextView1 –

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