2013-04-05 9 views
16

Ho creato una vista di raccolta molto semplice per un progetto di esempio di vista raccolta Apple. Ho una vista raccolta in un controller di visualizzazione nello storyboard e imposto un'etichetta all'interno della cella della vista dell'insieme nella parte in alto a destra della vista dell'insieme. L'ho collegato a IBOutlet nella mia cella personalizzata. Ecco il codice rilevante:UILabel in UICollectionViewCell personalizzato sempre null, non è possibile aggiornare il testo

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [self.workoutView registerClass:[Cell class] forCellWithReuseIdentifier:@"Cell"]; 
    ... 
} 

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { 
    if (collectionView == self.collView) { 
     Cell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath];  
     cell.segmentTitle.text = @"some text"; 
     cell.backgroundColor = [UIColor whiteColor]; 
     return cell; 
    } 
    return nil; 
} 

ho messo un punto di interruzione dopo la parte segmentTitle.text e segmentTitle è sempre nullo. Di conseguenza, ciò che vedo nel simulatore sono scatole bianche vuote. Cosa mi sono perso?

risposta

41

UICollectionViewCell all'interno di StoryBoard non è necessario registrarsiClass, basta scegliere l'identificatore di riutilizzo in StoryBoard. Eliminare questa riga:

// [self.workoutView registerClass:[Cell class] forCellWithReuseIdentifier:@"Cell"]; 

E assicurarsi di collegare modo giusto:

tipo di classe -Selezionare di UICollectionViewCell in Storyboard to Cell

-Drag UILabel in cellulare e collegare a Cell.h

-Tipo l'identificatore riutilizzo

+5

Rimuovere la riga di registro e utilizzare l'identificatore di riutilizzo dallo storyboard fissato. Grazie! – brodney

+2

Questo funziona. A volte c'è troppa magia nello storyboard. –

+0

Mi spiace cosa intendi con -Type l'identificatore di riutilizzo? Ho cancellato la prima riga ma non riesco a vedere nulla (ha fatto gli altri passaggi) – Signo

2
MainFeedCollectionView.registerClass(CollectionViewCell.self, forCellWithReuseIdentifier: "CollectionViewCell") 

rimuovo d questa linea dal mio codice ora funziona ora bene ...