2013-05-29 245 views
1

在我的iPhone應用程序中,我有四種類型的單元格。每個細胞都有它自己的高度。我想爲每個表格視圖單元格設置行的高度,但它在此方法中崩潰:UITableView行高崩潰

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ 
    UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath]; 
    NSLog(@"%@", cell); 
    if([cell.reuseIdentifier isEqualToString:PastEventWICellIdentifier]){ 
     return 56; 
    } 
    if([cell.reuseIdentifier isEqualToString:PastEventWOICellIdentifier]){ 
     return 56; 
    } 
    if([cell.reuseIdentifier isEqualToString:EventWICellIdentifier]){ 
     return 112; 
    } 
    if([cell.reuseIdentifier isEqualToString:EventWOICellIdentifier]){ 
     return 112; 
    } 
    return 56; 
} 

我該如何解決這個問題?

+0

和崩潰消息是? – jcesarmobile

+0

嘗試返回112.0f; –

+0

爲什麼不根據行的數據源屬性來區分單元格,而不是調用'cellForRowAtIndexPath:'? – Amar

回答

7

您不能在方法heightForRowAtIndexPath內使用cellForRowAtIndexPath獲取單元格,因爲單元格尚未存在。他們將在他們的高度設置後創建。

您可以使用indexPath.row根據其位置設置單元的高度。

0

您不能使用方法cellForRowAtIndexPath,此方法在cellForRowAtIndexPath之前調用,因此單元格不存在。當調用heightForRowAtIndexPath時,應該有一個已經計算好的高度列表。請記住,不要加載tableview中的所有列表,因爲此方法(heightForRowAtIndexPath)需要更長的時間來加載tableview ...