2013-07-26 2 views
5

Ich habe eine Tabellenansicht mit 5 statischen Zellen. Sie sind statisch, weil es immer nur 5 von ihnen in der Tabellenansicht gibt.Wie benutze ich benutzerdefinierte statische UITableViewCells, um Bilder in der Zelle anzuzeigen?

Custom Cell

ich sie individuelle Zellen wollen, weil ich UIImageViews in jeder Zelle müssen zum Zentrum, weil sie Schaltfläche Bilder und nichts anderes haben. Ich habe eine MyCustomCell-Klasse mit einem UIImageView-Ausgang erstellt und an die Steckdose angeschlossen.

Cell Xib

Dann in der Tableview Controller-Klasse habe ich dies:

#pragma mark - TableView Cell Methods 
- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    MyCustomCell *cell = [[MyCustomCell alloc] init]; 

    switch (indexPath.row) { 
     case 0: 
      // Use Custom Cell 
      cell.thumbnailImageView.image = [UIImage imageNamed:@"button.png"]; 
      break; 
     case 1: 
      [cell setAccessoryType:UITableViewCellAccessoryDisclosureIndicator]; 
      // USE IMAGE INSTEAD 
      cell.thumbnailImageView.image = [UIImage imageNamed:@"button1.png"]; 
      break; 
     case 2: 
      cell.thumbnailImageView.image = [UIImage imageNamed:@"button2.png"]; 
      break; 
     case 3: 
      cell.thumbnailImageView.image = [UIImage imageNamed:@"button3.png"]; 
      break; 
     case 4: 
      cell.thumbnailImageView.image = [UIImage imageNamed:@"Search.png"]; 
      break; 
     default: 
      break; 
    } 
    return cell; 
} 

MyCustomCell.m:

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{ 
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; 
    if (self) { 

    } 
    return self; 
} 

- (void)setSelected:(BOOL)selected animated:(BOOL)animated{ 
    [super setSelected:selected animated:animated]; 

    // Configure the view for the selected state 
} 

Die Zellen zeigen leer. Es funktionierte gut, wenn ich anstelle von MyCustomCell UITableViewCell verwendete. Also ich bin mir nicht sicher, warum es jetzt versagt.

+0

Ihren CustomCell.m init-Methode Inhalte posten, oder layoutSubviews. Außerdem sollten Sie prüfen, ob eine Zelle existiert, indem Sie die Warteschlange entfernen, sonst werden Sie jedes Mal neue Zellen zuweisen, wenn eine Zelle vom Bildschirm scrollt (schlecht) – Justin

+0

Aber das sind statische Zellen. – marciokoko

+0

Es gibt keinen Verweis auf thumbnailImageView innerhalb Ihrer benutzerdefinierten Zellklasse, wo dieses imageView eingerichtet wird (init, frame usw.) – Justin

Antwort

3

Ich sehe nirgends, wo Sie die .xib-Datei für Ihre benutzerdefinierte Zelle in MyCustomCell.m verweisen. Sie müssen der Klasse mitteilen, welche .xib-Datei geladen werden soll.

Schauen Sie sich das folgende Tutorial, das ein Verfahren zeigt die Zelle aus der .xib-Datei zu laden (in der benutzerdefinierten Zellklasse): Creating custom UITableViewCell from XIBs – step by step tutorial

Diese Frage zeigt ein anderes Verfahren (innerhalb cellForRowAtIndexPath): how to create custom tableViewCell from xib

Auch verwenden Sie nicht wirklich statische Zellen, wenn Sie sie in cellForRowAtIndexPath neu erstellen. Sie verlieren alles, was Sie in Interface Builder eingerichtet haben. Erwägen Sie, die statischen Zellen aufzugeben. Sie können einfach alle Zelleneigenschaften an der Stelle einrichten, an der Sie das Bild festgelegt haben. Wenn Sie den statischen Zellenansatz aufgeben, sollten Sie darüber nachdenken, Ihre benutzerdefinierte Zelle im selben View-Controller wie Ihre Tabellenansicht zu erstellen (der Standard UITableView enthält eine Platzhalterzelle für diesen Zweck) und die benutzerdefinierte Zelle auf die übliche Weise zu entfernen. Dann gibt es keine zusätzliche .xib zu laden, so wird es automatisch behandelt. Siehe meine vorherige Antwort für weitere Details auf creating a custom table view cell wie folgt.

0

Wenn Sie statische Zellen verwenden, nur IBOutlets jede Zelle erstellen und dann so etwas tun:

- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    MyCustomCell *cell = nil; 

    switch (indexPath.row) { 
     case 0: 
      cell0.thumbnailImageView.image = [UIImage imageNamed:@"button.png"]; 
      cell = cell0; 
      break; 
      case 1: 
      //you can set the accessory type in the storyboard 
      [cell1 setAccessoryType:UITableViewCellAccessoryDisclosureIndicator]; 
       cell1.thumbnailImageView.image = [UIImage imageNamed:@"button1.png"]; 
      cell = cell1; 
      break; 
      //etc 
    } 
    return cell; 
} 
+0

Ok Ich habe bereits die Klasse MyCustomCell erstellt, den UIImageView-Ausgang hinzugefügt und verbunden, jede statische Zelle von Identity MyCustomCell erstellt. Aber ich habe den Schritt cell = cell0 weggelassen. Ich habe es direkt eingestellt. Was meinst du mit cell0? – marciokoko

Verwandte Themen