2011-08-08 10 views
0

私は、連絡先アプリのdetailedViewのようなグループ化されたスタイルのUITableViewを実現しようとしています。私は一番上のセルが透明で、下にUISegemtedControlを持っています。複数のカスタムUITableViewCellを使用する

2つの異なるタイプのカスタムセルを作成しようとすると、2つの異なるcellIdentifierを使用しても、最初のセルのみがロードされます。

somガイダンスに感謝します。または、同じトピックのための良いチュートリアルのヒント。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    /* 
    UIView *backView = [[UIView alloc] initWithFrame:CGRectZero]; 
    backView.backgroundColor = [UIColor clearColor]; 
    cell.backgroundView = backView; 
    [backView release]; 
    */ 

    static NSString *cellIdentifier1 = @"DetailCellStyle1"; 
    static NSString *cellIdentifier2 = @"DetailCellStyle2"; 

    if (indexPath.section == 0) { 

     // Load from nib 
     DetailCellViewController *cell = (DetailCellViewController *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier1]; 
     if (cell == nil) { 
      NSArray *topLevelObjects = [[NSBundle mainBundle] 
             loadNibNamed:@"DetailCellView" 
             owner:nil 
             options:nil]; 

      for (id currentObject in topLevelObjects) { 
       if ([currentObject isKindOfClass:[UITableViewCell class]]) { 
        cell = (DetailCellViewController *) currentObject; 
        break; 
       } 
      } 
     } 

     return cell; 
    } 
    else { 
     // Load from nib 
     DetailCellViewController2 *cell = (DetailCellViewController2 *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier2]; 
     if (cell == nil) { 
      NSArray *topLevelObjects = [[NSBundle mainBundle] 
             loadNibNamed:@"DetailCellView" 
             owner:nil 
             options:nil]; 

      for (id currentObject in topLevelObjects) { 
       if ([currentObject isKindOfClass:[UITableViewCell class]]) { 
        cell = (DetailCellViewController2 *) currentObject; 
        break; 
       } 
      } 
     } 

     return cell; 
    } 

    return nil; 
} 
+0

'numberOfSectionsInTableView:'メソッドは何を返しますか? – omz

+0

これは2を返します。 – Silversnail

+0

2行のセクションが1つしかないと仮定していました。コードをもう一度見て、セル1とセル2をまったく同じ方法でロードすることに気付きました"DetailCellView"ペン先の 'UITableViewCell'型の最初のオブジェクトです。したがって、どちらの場合も同じセルが得られます。 – omz

答えて

2

UITableViewCellの最初のオブジェクトを "0"にして、セル1とセル2をまったく同じ方法でロードします。これは、コードの最後では、 DetailCellView "nib。したがって、どちらの場合も同じセルが得られます。

0

まあ、正直に私は多分if(cell == nil)コールの中で他として第2のロードしようとすると、セルがnilのとき、負荷コールが唯一、efficiantするapears、どちらかわからないけど、..

+0

あなたのコードを見落としてしまいました。最初のセクションでは、他のセクションよりも別のセルを使いたいと思っています...あなたの異なるペン先はどういうふうに呼ばれていますか?ロードペン先に " DetailCellView "を両方 – markus

関連する問題