我已使用UIView
创建了UICollectionView
。
在UIView
的接口声明中,我符合UICollectionViewDataSource
,UICollectionViewDelegate
协议:
@interface TestOverview : UIView <UICollectionViewDataSource, UICollectionViewDelegate>
但是当我运行应用程序时,它会崩溃并且我收到此错误: -
error: -[TestScreenViewController collectionView:numberOfItemsInSection:]: unrecognized selector sent to instance.
collectionView:numberOfItemsInSection
位于UIView
(TestOverview)中,该方法被声明为UICollectionView
的委托。那么为什么它期望在UIViewController
(TestScreenViewController)中收到它,其中包含UIView
的{{1}}? 答案 0 :(得分:6)
首先,如果您使用视图控制器作为UICollectionView
的代表,那会更好。这就是他们的目的。其次,您不仅需要声明TestOverview
实现UICollectionViewDataSource
和UICollectionViewDelegate
协议,还需要告诉UICollectionView
实例他们的委托和数据源分别是。您可以使用以下代码执行此操作:
self.collectionView.delegate = self;
self.collectionView.dataSource = self;
或者在Interface Builder中,通过绑定dataSource并将项目委托给TestOverview
。
答案 1 :(得分:0)
最好将viewcontroller用作collectionview委托而不是uiview。
self.collectionView.delegate = self;
self.collectionView.dataSource = self;