2012-11-15 5 views
8

Sto migrando dalla personalizzazione di TableViewCells in tableView:cellForRow:atIndexPath: all'utilizzo di una sottoclasse personalizzata UITableViewCell. Ecco come ho fatto:registerNib: forReuseidentifier con UTTableViewCell e Storyboard personalizzati

In primo luogo, creato XIB vuoto, trascinato UITableViewCell lì e mettere un UILabel in cima. Creata una classe (sottoclasse di UITableViewCell) e nell'editor delle proprietà di Interface Builder imposta la classe su MyCell. Poi, nel mio TableViewController, inserire il seguente:

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
// load custom cell 
UINib *cellNIB = [UINib nibWithNibName:@"MyCell" bundle:nil]; 
if (cellNIB) 
{ 
    [self.tableView registerNib:cellNIB forCellReuseIdentifier:@"MyCell"]; 
} else NSLog(@"failed to load nib"); 
} 

Dopo di che ho spazzato via tutto il codice personalizzato da tableView:cellForRow:atIndexPath: e sinistra solo linee predefinite:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"MyCell"; 
    MyCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    return cell; 
} 

Quando ho eseguito questo, mi aspettavo di vedere un gruppo di celle con una singola etichetta in ogni cella (la stessa etichetta che ho lasciato cadere nel mezzo durante la creazione di XIB). Invece vedo solo celle vuote bianche e aggiungere/rimuovere i componenti al layout XIB non aiuta.

Trascorro un GIORNO cercando diverse opzioni come l'impostazione di riutilizzareIdentificatore in Interface Builder per XIB di celle personalizzate e caricamento della vista in tableView:cellForRow:atIndexPath:, ma nessuna ha aiutato.

risposta

10

... ma si è scoperto che l'unica cosa che mi mancava era la cancellazione del riutilizzoIdentificatore per cella prototipo nella mia Storyboard per questo TableViewController. Sembra che Storyboard inizializza le sue opinioni/componenti più tardi che viewDidLoad chiamati, e invece di prendere il mio bel cella personalizzato, xCode imposta la vera vista di cella per il riutilizzo a poco cellulare pianura bianca che è lo standard per TableViewControllers appena creati.

Così ancora una volta: Vai al tuo proprietà Tableview e rimuovere il reuseIdentifier impostato prima;)

spendo così tanto tempo per questo, così ho pensato che potrebbe aiutare qualcuno se condivido questa esperienza qui.