0

我创建了一个UIViewwith UICollectionView

UIViewI 的接口声明中符合UICollectionViewDataSource,UICollectionViewDelegate协议:

 @interface TestOverview : UIView <UICollectionViewDataSource, UICollectionViewDelegate>

但是当我运行该应用程序时,它崩溃了,我收到了这个错误:-

error: -[TestScreenViewController collectionView:numberOfItemsInSection:]: unrecognized selector sent to instance.
  • 为了清楚起见,该方法collectionView:numberOfItemsInSection位于UIView(TestOverview) 中,它被声明为UICollectionView. 那么为什么它期望在UIViewController(TestScreenViewController) 中收到它,其中包含UIView包含UICollectionView?
4

2 回答 2

7

首先,如果您使用视图控制器作为UICollectionView. 这就是他们的目的。其次,你不仅需要声明TestOverview实现UICollectionViewDataSourceUICollectionViewDelegate协议,还需要告诉UICollectionView实例它们的委托和数据源分别是谁。您可以在这样的代码中执行此操作:

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

或者在 Interface Builder 中,通过将 dataSource 和委托项绑定到TestOverview.

于 2013-05-25T09:28:31.997 回答
0

使用 viewcontroller 作为 collectionview 委托比使用 uiview 更好。

self.collectionView.delegate = self;
self.collectionView.dataSource = self;
于 2017-04-22T10:53:40.717 回答