2013-10-06 39 views
0

我喜歡將多個可重用的UITableViewCells添加到TableView。我正在使用此代碼來執行此操作,但它不起作用,它只顯示第一個單元格。如何使用多個可重用的TableViewCells

這裏是我的代碼:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if (indexPath.row == 0) { 

     static NSString *costumeCell1 = @"Cell1"; 

     AppDetailCell1 *cell1 = [tableView dequeueReusableCellWithIdentifier:costumeCell1]; 

     if (!cell1) { 
      cell1 = [[AppDetailCell1 alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:costumeCell1]; 
     } 

     return cell1; 
    } 
    if (indexPath.row == 1) { 

     static NSString *costumeCell2 = @"Cell2"; 

     AppDetailCell2 *cell2 = [tableView dequeueReusableCellWithIdentifier:costumeCell2]; 

     if (!cell2) { 
      cell2 = [[AppDetailCell2 alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:costumeCell2]; 
     } 

     return cell2; 
    } else { 

     return nil; 

    } 
} 
+0

而不是返回零,我建議記錄一個錯誤和/或引發異常。另外,而不是if/else/else,'switch'將成爲我選擇的武器。 –

回答

0

如果你正確設置重用標識符,你應該改變這種代碼的一部分

AppDetailCell1 *小區1 =的tableView dequeueReusableCellWithIdentifier:costumeCell1]。

if (!cell1) { 
     cell1 = [[AppDetailCell1 alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:costumeCell1]; 
    } 

與此

AppDetailCell1 *cell1 = [tableView dequeueReusableCellWithIdentifier:costumeCell1 forIndexPath:indexPath]; 

沒有必要if(!cell1),因爲dequeueReusableCellWithIdentifier: forIndexPath:方法永遠不會返回零,前面說過,妥善重用標識符設置是非常重要的。