2010-07-02 107 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