2013-07-25 6 views
11

Ich möchte 2 oder mehr benutzerdefinierte Zellen in einem Tableview hinzufügen, mithilfe von Storyboard. Ich kann verschiedene Zellen ohne Storyboard hinzufügen. Ich mache das immer auf diese Weise:Wie fügt man verschiedene benutzerdefinierte Zellen in einem TableView mit Storyboard hinzu?

static NSString *CellIdentifier = @"Cell"; 
CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
//pictureCell = [[DetailPictureCell alloc]init];//(DetailPictureCell *)[tableView dequeueReusableCellWithIdentifier: CellIdentifier]; 
pictureCell.header = true; 
[pictureCell setHeader]; 
if (cell == nil) { 
    if ([indexPath row] == 0) { 
     NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"HeaderAngebotViewCell" owner:self options:nil]; 
     NSLog(@"New Header Cell"); 
} 
    if([indexPath row] ==1){ 
    NSArray *nib = [[NSBundle mainBundle]loadNibNamed:@"productCell" owner:self options:nil]; 
     cell = [nib objectAtIndex:0]; 
} 

Und jetzt meine Frage: Wie kann ich das mit Storyboard tun? Zum Hinzufügen einer benutzerdefinierten Zelle ist möglich. Aber ich kann zwei verschiedene Zellen nicht hinzufügen. Kannst du mir bitte helfen?

Antwort

30

Wählen Sie im Attributinspektor für die Tabellenansicht "Dynamische Prototypen" und darunter die Anzahl der Prototypzellen aus. Geben Sie jeder Zelle einen anderen Bezeichner und beim Entfernen der Zellen in cellForRowAtIndexPath den entsprechenden Bezeichner basierend auf indexPath an.

enter image description here

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSString *identifier; 
    if (indexPath.row == 0) { 
     identifier = @"OneCellId"; 
    } else if (indexPath.row == 1) { 
     identifier = @"OtherCellId"; 
    } 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier]; 

    //configure cell... 
} 
+0

Dank! Sie können ein Beispiel hinterlassen, wie es mit der entsprechenden Kennung basierend auf Indexpfad funktioniert? –

+0

vielen Dank :) –

+0

Ich habe es getan wie du gesagt hast. Und ich bekomme einen Fehler. "Tableview datasource muss eine Zelle aus der Tabellenansicht zurückgeben: cellforrowatindexpath" Vielleicht habe ich etwas vergessen? Ich habe die Zelle im Storyboard mit der benutzerdefinierten Zelle und den Beschriftungen verknüpft. ... NSInteger-Zeile = [indexPath-Zeile]; NSInteger-Zeile = [indexPath-Zeile]; NSString * Bezeichner; CustomCell * Zelle = [tableView dequeueReusableCellWithIdentifier: Bezeichner]; if (Zeile == 0) {Bezeichner = @ "ThirdCell"; cell.clubNameLabel.text = @ "% @", [Clubname objectAtIndex: row]; } return cell; .... –