UICollectionView代表不被称为

问题描述:

我有自定义UICollectionViewController,UICollectionViewFlowLayoutUICollectionViewCell类。在我的布局中,我已将每个部分堆叠起来,类似于http://skeuo.com/uicollectionview-custom-layout-tutorialUICollectionView代表不被称为

当我运行应用程序时,所有数据都显示正确。

我正试图在我的控制器中实现didSelectItemAtIndexPath,以根据点击项目启动seque。但是委托方法永远不会被调用。在我的自定义单元类中,我添加了一个调用了touchesEnded的方法,但我无法弄清楚为什么我的视图控制器类中的委托没有触发。

在我的UICollectionViewController类我指定协议<UICollectionViewDelegate, UICollectionViewDataSource>。在viewDidLoad我还规定:

self.collectionView.delegate = self; 
self.collectionView.dataSource = self; 

作为一个方面说明,但我认为这是一个相关问题: - 在故事板,我有我的原型细胞。这是班级类型设置为我的自定义班级,我已设置ReuseIdentifier。在我的视图控制器中加载我的自定义单元类并使用相同的ReuseIdentifier。但是,StoryBoard和Cell类之间存在脱节。我可以对故事板原型单元进行更改,并且不会反映在运行时发生的情况。相反,我必须将该行注释掉:

[self.collectionView registerClass:[NSideCollectionViewCell class] forCellWithReuseIdentifier:NSIDE_CELL_IDENTIFIER]; 

强制它使用我的故事板单元格版本。但是当我这样做时,我的单元类中的我的initWithFrame自定义初始化代码永远不会被调用。我不确定为什么会出现这种情况,因为Storyboard清楚地显示我的原型单元格具有正确的类别类型。

+0

你的自定义单元格是什么样的?你是否有类似UITextView的东西来覆盖可能拦截触摸的大部分单元格? – jeffro37 2015-04-02 14:28:44

+0

您的自定义课程中是否有[超级触控着陆:触动]? – 2015-04-02 14:43:46

回答了我自己的问题 - 在故事板中创建的项目调用initWithCoder而不是initWithFrame。注释显式自定义单元类注册允许视图控制器遵循故事板中设置的内容,并且所有内容都按预期工作。

+0

你也可以使用方法“awakeFromNib” – 2015-04-02 15:39:20