2013-04-02 6 views
8

Ich erstelle eine UICollectionViewController programmgesteuert. Nein, ich möchte IB und Storyboards nicht wie jedes andere Tutorial verwenden. Ich möchte nur einfachen Code verwenden. HierUICollectionViewController Programmgesteuert abstürzt mit Nicht-Null-Layout-Parameter Fehler

ist, was ich habe in meinem 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]; 

ich die erforderlichen Delegatmethoden umgesetzt haben und ich immer noch diesen Fehler:

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

Antwort

10

Dies ist, was ich verwende eine UICollectionViewController zu initialisieren :

- (id)initWithCollectionViewLayout:(UICollectionViewLayout *)layout 

Sie brauchen nicht zu instantia In der CollectionView erledigt der Controller das für Sie. Stellen Sie den Rahmen nach diesem Aufruf oder Sie können den Rahmen nach innen außer Kraft setzen und einstellen:

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

Ich höre am liebsten autolayout Einschränkungen verwenden.

Verwandte Themen