【问题标题】:UICollectionView - Exception 'NSInvalidArgumentException'UICollectionView - 异常'NSInvalidArgumentException'
【发布时间】:2014-10-02 11:42:52
【问题描述】:

我正在创建包含UICollectionViewUIViewController,这是我认为是正确的故事板、代表和出口中的所有设置。在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 是必需的,但是当 CollectionView 在 StoryBoard 中初始化时如何实现?为什么它的方法在 ViewController 类中时它会起作用?

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

【问题讨论】:

    标签: ios objective-c xcode uiviewcontroller uicollectionview


    【解决方案1】:

    在所有的打字之后,我发现这是一个愚蠢的错字,我将数据源类设为 UICollectionView 而不是 NSObject 的子类。

    【讨论】:

      猜你喜欢
      • 2016-10-18
      • 1970-01-01
      • 2012-10-17
      • 1970-01-01
      • 2020-07-22
      • 2013-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多