2013-07-26 13 views
5

Ho una vista tabella con 5 celle statiche. Sono statici perché ci saranno sempre solo 5 di loro nella tableview.Come utilizzare Custom Static UITableViewCells per visualizzare le immagini nella cella?

Custom Cell

Voglio che le cellule personalizzati perché ho bisogno di centrare UIImageViews in ogni cella perché avranno le immagini dei pulsanti e nient'altro. Ho creato una classe MyCustomCell con una presa UIImageView e l'ho collegata alla presa.

Cell Xib

Poi nella classe controller Tableview ho fatto questo:

#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 
} 

Le cellule appaiono in bianco. Ha funzionato bene quando invece di MyCustomCell stavo usando UITableViewCell. Quindi non sono sicuro del perché sta fallendo ora.

+0

pubblicare il tuo CustomCell.m init contenuti metodo o layoutSubviews. Inoltre, dovresti controllare se una cella esiste eliminando la coda, altrimenti dovrai allocare nuove celle ogni volta che una cella scorre fuori dallo schermo (errata) – Justin

+0

Ma queste sono celle statiche. – marciokoko

+0

Non c'è alcun riferimento a thumbnailImageView all'interno della classe di celle personalizzata, dove viene impostato questo imageView (init, frame ecc.) – Justin

risposta

3

Non vedo dove si fa riferimento al file .xib per la cella personalizzata in MyCustomCell.m. Devi dire alla classe quale file .xib caricare.

controllare il seguente tutorial, che dimostra un metodo per caricare il cellulare dal file .xib (all'interno della classe di cella personalizzato): Creating custom UITableViewCell from XIBs – step by step tutorial

Questa domanda mostra un altro metodo (entro cellForRowAtIndexPath): how to create custom tableViewCell from xib

Inoltre, non stai realmente utilizzando le celle statiche se le stai ricreando in cellForRowAtIndexPath. Perderai tutto ciò che hai configurato in Interface Builder. Considera di abbandonare le celle statiche. Puoi semplicemente configurare tutte le proprietà della cella nello stesso posto in cui hai impostato l'immagine.

Infine, se si rinuncia all'approccio alla cella statica, considerare la creazione della cella personalizzata all'interno dello stesso controller di visualizzazione della vista tabella (lo standard UITableView dispone di una cella segnaposto per questo scopo) e dequezionare la cella personalizzata nel modo standard. Quindi, non è necessario caricare .xib aggiuntivo, quindi verrà gestito automaticamente. Vedere la mia risposta precedente per maggiori dettagli su creating a custom table view cell come questo.

0

Se si utilizza celle statiche, basta creare IBOutlets a ciascuna cella e poi fare qualcosa di simile:

- (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 Ho già creato la classe MyCustomCell, ho aggiunto l'UIImageView e l'ho connessa, ho creato ciascuna cella statica di Identity MyCustomCell. Ma ho omesso il passaggio cell = cell0. L'ho appena impostato direttamente. Cosa intendi per cell0? – marciokoko

Problemi correlati