在子视图中创建UICollectionView

时间:2014-06-27 06:44:10

标签: ios ios7 uiscrollview uicollectionview uicollectionviewlayout

我有一个视图控制器(位于标签栏控制器中),但需要向该控制器添加一个集合视图。我在谷歌上看到很多教程,但它们似乎都指向创建UICollectionViewController并从viewDidLoad开始。但是我如何在子视图中进行操作?

我的视图controller.m文件是这样的:

- (void) createView // called from viewDidLoad
{

    UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0.0, 64.0, screenWidth, screenHeight)];

    [scrollView.layer addGradient];

    ACollectionView *theview = [[ACollectionView alloc] init];

    [self.view addSubview:theview];
}

接下来,我启动了一个名为UICollectionView

ACollectionView.h子类
@interface ACollectionView : UICollectionView

@end

.m文件是这样的:

#import "ACollectionView.h"

@implementation BestCollectionView

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
    }
    return self;
}

initWithFrame中,我从哪里开始收集视图?

我试图遵循这个: Creating a UICollectionView programmatically

我的范例是否正确?

1 个答案:

答案 0 :(得分:0)

@property (nonatomic, strong) UICollectionView *collectionView;

- (void)viewDidLoad
{
    [super viewDidLoad];
     UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
    self.collectionView = [[UICollectionView alloc] initWithFrame:self.yourSubview.frame collectionViewLayout:layout];
    [self.collectionView setDataSource:self];
    [self.collectionView setDelegate:self];

    [self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"cellIdentifier"];

    [self.yourSubview addSubview:self.collectionView];

}

- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
    return 50;
}

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    UICollectionViewCell *cell=[collectionView dequeueReusableCellWithReuseIdentifier:@"cellIdentifier" forIndexPath:indexPath];
    cell.backgroundColor = [UIColor redColor];
    return cell;
}

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
    return CGSizeMake(100, 100);
}