viewWithTag devuelve nil al inicializar UICollectionViewCell

Acabo de comenzar con UICollectionView . He usado IB para crear un simple UICollectionView en un UIViewController . Se desplaza horizontalmente con búsqueda. UICollectionViewCell una simple UICollectionViewCell dentro de UICollectionView . Configuré el identificador de reutilización para la celda.

UILabel un UILabel con una label de 100 dentro de UICollectionViewCell .

En viewDidLoad , llamo:

 [_collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"Thing"]; 

Luego bash inicializar la celda así:

 - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"Thing" forIndexPath:indexPath]; cell.backgroundColor = [UIColor greenColor]; UILabel *nameLabel = (UILabel *)[cell viewWithTag:100]; nameLabel.text = @"Bogus"; return cell; } 

Cuando ejecuto la aplicación, la vista se carga correctamente; Puedo desplazarme horizontalmente a través de las 2 celdas. Veo el feo color verde que identifica cada celda.

Sin embargo, el método viewWithTag devuelve nil y, por lo tanto, el text nameLabel no está establecido.

¿Por qué?

Tenga en count que también intenté definir una subclass personalizada de UICollectionViewCell y llamar a registerClass con ella. En IB, cambio la class de celda a la subclass personalizada y enlace el UILabel a la salida de UILabel en la subclass.

Pero esto tampoco funciona. (De todos modos, preferiría evitar el enfoque de subclass personalizado porque no parece necesario definir classs solo para contener IBOutlets ).

Estoy pensando que me estoy perdiendo algo obvio aquí.

Problema similar descrito aquí:

Problema al acceder a la image de la instancia de UICollectionViewCell

Eliminar la línea registerClass. Lo estás haciendo en el guión gráfico, así que no lo necesitas.

intentalo

UILabel *nameLabel = (UILabel *)[cell.contentView viewWithTag:100];

Actualizar:

Puede ver la jerarquía de la celda y toda la label de su subvista: [self showAllSubView:cell] ; , ¿puedes encontrar tu label con la label 10?

 - (void)showAllSubView:(UIView *)view { for (UIView * subView in [view subviews]) { NSLog(@"%@, tag:%d", subView, subView.tag) ; [self showAllSubView:subView] ; } }