UICollectionViewController Bloqueo programático con error de parámetro de layout no nulo

Estoy creando un UICollectionViewController progtwigción. No, no quiero usar IB y Storyboards como todos los tutoriales. Solo quiero usar un código simple.

Esto es lo que tengo en mi viewDidLoad . viewDidLoad :

 // UICollectionView UICollectionViewFlowLayout *aFlowLayout = [[UICollectionViewFlowLayout alloc] init]; [aFlowLayout setItemSize:CGSizeMake(200, 140)]; [aFlowLayout setScrollDirection:UICollectionViewScrollDirectionVertical]; self.collectionView = [[UICollectionView alloc] initWithFrame:self.view.frame collectionViewLayout:aFlowLayout]; [self.collectionView setDelegate:self]; [self.collectionView setDataSource:self]; self.collectionView.backgroundColor = [UIColor clearColor]; [self.collectionView setAutoresizingMask:UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleWidth]; [self.collectionView registerClass:[PUCImageGridCell class] forCellWithReuseIdentifier:CollectionViewCellIdentifier]; 

He implementado los methods delegates requeridos y sigo recibiendo este error:

 Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'UICollectionView must be initialized with a non-nil layout parameter' 

Esto es lo que utilizo para inicializar un UICollectionViewController :

 - (id)initWithCollectionViewLayout:(UICollectionViewLayout *)layout 

No necesita instanciar la colección. Ver el controller lo hará por usted. Establezca el marco después de llamar a esto o puede anular y configurar el marco dentro:

 - (id)initWithCollectionViewLayout:(UICollectionViewLayout *)layout{ self = [super initWithCollectionViewLayout:layout]; if (self) { // additional setup here if requinetworking. } return self; } 

Prefiero usar las restricciones de autolayout .