我想创建一个自包含的UICollectionView
子类(充当自己的数据源和委托),以便我可以在不同的viewControllers中加载它。这是我到目前为止所做的:
CustomCollectionView.h
@interface CustomCollectionView : UICollectionView <UICollectionViewDataSource, UICollectionViewDelegate>
@property (weak, nonatomic) IBOutlet UICollectionView *collectionView;
@end
CustomCollectionView.m
#import "SSCalendarView.h"
@implementation SSCalendarView
@synthesize collectionView;
- (id)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
[[NSBundle mainBundle] loadNibNamed:NSStringFromClass([self class]) owner:self options:nil];
[self registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"Identifier"];
[self addSubview:collectionView];
}
return self;
}
// Below are UICollectionViewDataSource and UICollectionViewDelegate methods
@end
CustomCollectionView.xib
UICollectionView
。它的类设置为CustomCollectionView
CustomCollectionView
UICollectionView
的委托和数据源我知道我在这里犯了很多错误。但也许我们可以将此作为起点。
我的问题是:
答案 0 :(得分:1)
已存在可用于此目的的对象 - UICollectionViewController
。这可以是子类并添加到任何视图控制器(作为子视图控制器),并且已经包含一个集合视图,它是数据源和委托。
您当前的方法存在的问题是:
owner
参数的对象是文件的所有者。我不知道你最终使用你现有的代码到底是什么。 答案 1 :(得分:0)
首先让视图像视图控制器一样违反了MVC,请你说了 - 所以你不应该这样做。
从理论上讲,可以强迫观点充当代表和&amp;数据源,但我不推荐它。
如果您仍想这样做 - 只需分配代表&amp;数据来源为self
:
self.dataSource = self;
self.delegate = self;
并在.h文件中采用UICollectionViewDelegate
和UICollectionViewDataSource
协议