2010-07-02 142 views
0

只是一个简单的问题。 是否有一种简单的方法来根据单元格中包含的文本动态设置单元格高度? 场景: 分组表格视图有两个部分。第一节和第二节包含来自数据库的文本(具有不同长度的文本)。有动态单元高度的UITableView

我已经看过一些教程和代码片段,但没有任何东西似乎对我有任何帮助(或者我太厚以致无法正确使用)。

我将不胜感激一些建议或链接到一个教程,甚至更好的编码思想!

谢谢!

+0

有人吗?有什么建议么? – treasure 2010-07-03 05:53:33

回答

3

好的这里的答案是: (虽然没有完成) 我有一个问题,并希望得到一些帮助,因为它是让我疯了! (我得到一个警告:控制达到非无效功能的结束)

有人可以帮助吗?

这是代码!

#pragma mark - 
#pragma mark UITableViewDelegate methods 
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { 



    UITableViewCell *cell = [self newOrReusableCell]; 

    if (indexPath.section == A_SECTION) { 

    NSUInteger row = indexPath.row; 
    NSString *text = [_centerArray objectAtIndex:row]; 
    UILineBreakMode lineBreakMode = cell.textLabel.lineBreakMode; 

    CGFloat width = _tableView.contentSize.width - (kTableCellHPadding*2 + tableCellMargin*2); 
    UIFont* font = cell.textLabel.font; 
    CGSize size = [text sizeWithFont:font 
        constrainedToSize:CGSizeMake(width, CGFLOAT_MAX) 
         lineBreakMode:lineBreakMode]; 

    if (size.height > kMaxLabelHeight) { 
     size.height = kMaxLabelHeight; 
    } 

     return size.height + kTableCellVPadding*2; 
} 


    if (indexPath.section == B_SECTION) { 

     NSUInteger row = indexPath.row; 
     NSString *text = [_leftArray objectAtIndex:row]; 
     UILineBreakMode lineBreakMode = cell.textLabel.lineBreakMode; 

     CGFloat width = _tableView.contentSize.width - (kTableCellHPadding*2 + tableCellMargin*2); 
     UIFont* font = cell.textLabel.font; 
     CGSize size = [text sizeWithFont:font 
         constrainedToSize:CGSizeMake(width, CGFLOAT_MAX) 
          lineBreakMode:lineBreakMode]; 

     if (size.height > kMaxLabelHeight) { 
      size.height = kMaxLabelHeight; 
     } 

    return size.height + kTableCellVPadding*2; 
} 
}//i get the WARNING here!! 
+0

你会得到一个警告,因为你有2个if语句,并且在其中没有任何回报,之后什么也没有。如果两个if语句因任何原因都是错误的,那么你将不会有任何回报。你可以通过在最后一个}之前的方法底部返回一个返回值来解决这个警告,即使它只是返回0.0; – 2010-07-29 21:50:54

相关问题