UICollectionViewDataSource,UIView中的UICollectionViewDelegate

时间:2013-05-25 09:20:05

标签: ios objective-c uicollectionview

我已使用UIView创建了UICollectionView

UIView的接口声明中,我符合UICollectionViewDataSourceUICollectionViewDelegate协议:

 @interface TestOverview : UIView <UICollectionViewDataSource, UICollectionViewDelegate>

但是当我运行应用程序时,它会崩溃并且我收到此错误: -

error: -[TestScreenViewController collectionView:numberOfItemsInSection:]: unrecognized selector sent to instance.
  • 要明确方法collectionView:numberOfItemsInSection位于UIView(TestOverview)中,该方法被声明为UICollectionView的委托。那么为什么它期望在UIViewController(TestScreenViewController)中收到它,其中包含UIView的{​​{1}}?

2 个答案:

答案 0 :(得分:6)

首先,如果您使用视图控制器作为UICollectionView的代表,那会更好。这就是他们的目的。其次,您不仅需要声明TestOverview实现UICollectionViewDataSourceUICollectionViewDelegate协议,还需要告诉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;