刚接触√,总会遇到很多莫名其妙的困难,
最容易造成bug的是,我总以为UICollectionView和UITableView是差不多的,就先入为主基本就照抄uitableview的东西去做,以为只是把几个数据源方法和代理方法改个名字而已,这就是bug不断的根源!!
第一个问题:起码要显示点东西吧:
创建UICollectionViewFlowLayout并注册! 跟uitableview第一个不同就在这里,UICollectionView需要一个layout和为cell注册一个类才能显示出东西。。。。
UICollectionViewFlowLayout *flowLayout= [[UICollectionViewFlowLayoutalloc]init];
self.myUICollectionView = [[UICollectionView alloc]initWithFrame:CGRectMake(0,45,self.view.frame.size.width,self.view.frame.size.height-44) collectionViewLayout:flowLayout];
self.myUICollectionView.backgroundColor = [UIColor whiteColor];
[self.myUICollectionView registerClass:[ClassifiListCell1 class] forCellWithReuseIdentifier:@"myUICollectionViewCell"];
self.myUICollectionView.delegate = self;
self.myUICollectionView.dataSource = self;
[self.viewaddSubview:self.myUICollectionView];
这样,起码终于可以显示东西了,不容易。。。要注意的是,ClassifiListCell1是自定义的UICollectionViewCell;
第二个问题:重点!!cell重用时视图重叠!!!
数据表较多的话,当然,必须得重用cell,正常实现其他数据源方法,最重要的是以下方法:
NSUInteger row = [indexPathrow];
ClassifiListCell1 * cell = (ClassifiListCell1 *)[collectionViewdequeueReusableCellWithReuseIdentifier:@"myUICollectionViewCell"forIndexPath:indexPath];
if (!cell) {
cell = [[ClassifiListCell1alloc] initWithFrame:CGRectMake(0,0, 145, 200)];
}
if ([_commodity_listcount]>=row) {
NSDictionary *dict =[_commodity_listobjectAtIndex:row];
Classifi *merc = [[Classifialloc] init];
[mercsetJson:dict];
[cellsetCellContent:merc];
}
return cell;
其中[cell setCellContent:merc];是设置cell的视图,上面有图片和uitextfield等,如此倒弄一番,终于看到自己自定义的正常视图了,虽然位置还没调好,但毕竟这不是重点!!