UICollectionView - 异常'NSInvalidArgumentException'

时间:2014-08-08 22:03:05

标签: ios objective-c xcode uiviewcontroller uicollectionview

我正在创建UIViewController,其中包含UICollectionView这是故事板中的所有设置,代表和出口我认为是正确的。在UIViewController中,我实现了以下方法:

- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView 
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath

除了上述内容,故事板还包含一个UICollectionViewCell,它在一个单独的类中定义。这一切都完美无缺,CollectionView正在按预期显示数据。

但是......我希望创建一个单独的类来实现UICollectionViewDataSourceUICollectionViewDelegate方法,并且我已经将上面的UIViewController类中的方法剪切并粘贴到一个单独的数据源类。然后我将UICollectionViews委托和数据源设置为指向新类。这导致以下异常:

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

我尝试在故事板中添加新类作为NSObject并连接集合视图,并且在ViewController中的ViewDidLoad方法中也以编程方式将两者都添加为相同的异常。此异常是在ViewDidLoad之前生成的,ViewController是根视图控制器。

我错过了什么,谷歌搜索表明集合视图initWithCollectionViewLayout是必需的,但是当在StoryBoard中初始化CollectionView时它是如何实现的?为什么它的方法在ViewController类中时它可以工作?

最后一点是使用xCode 6 Beta 5,在一个完美的世界中我会在xCode 5中尝试这个,但我正在将数据源迁移到Swift。

1 个答案:

答案 0 :(得分:0)

在完成所有输入后我发现这是一个愚蠢的错字,我将数据源类作为UICollectionView的子类而不是NSObject。