UICollectionViewDataSource,UIView中的UICollectionViewDelegate

Lud*_*uda 0 objective-c ios uicollectionview

我创建了一个UIViewUICollectionView.

UIView我已经符合的接口声明中UICollectionViewDataSource,UICollectionViewDelegate协议:

 @interface TestOverview : UIView <UICollectionViewDataSource, UICollectionViewDelegate>
Run Code Online (Sandbox Code Playgroud)

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

error: -[TestScreenViewController collectionView:numberOfItemsInSection:]: unrecognized selector sent to instance.
Run Code Online (Sandbox Code Playgroud)
  • 只是要清楚该方法collectionView:numberOfItemsInSection是在UIView(TestOverview)中,它被声明为委托UICollectionView.那么为什么它期望在UIViewController(TestScreenViewController)中收到它,其中包含的UIView包含UICollectionView

Fra*_*ano 6

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

self.collectionView.delegate = self;
self.collectionView.dataSource = self;
Run Code Online (Sandbox Code Playgroud)

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