这两天,项目中有一个collectionView嵌套在tableView中的一个cell上,就试着写了一下.不讲什么大道理了,直接上.(大神勿喷,技术有限,纯粹提供一个思路_)
- 首先,获取到collectionView的item的数据,得到item的个数
- 第二步,根据item的个数,得到tableView的cell的高度
- 第三步,将collectionview添加到既定的cell上
- 最后一步,将collectionview设置为不能滑动
OK,直接上代码
// 保存item数据的数组
@property (nonatomic , strong) NSMutableArray *dataArray;
如果要是一行显示两个item,item的高度是120
那么,cell的高度
- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
return self.dataArray.count / 2 * 120;
}
将UICollectionView添加到cell上
CGFloat width = cell.frame.size.width;
UICollectionViewFlowLayout *flowLayout = [UICollectionViewFlowLayout new];
UICollectionView *collectionView = [[UICollectionView alloc] initWithFrame:CGRectMake(0, 0, width, self.dataArray.count / 2 * 120) collectionViewLayout:flowLayout];
collectionView.backgroundColor = [UIColor whiteColor];
collectionView.delegate = self;
collectionView.dataSource = self;
[collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"collection"];
flowLayout.itemSize = CGSizeMake((width - 10) / 2, 120);
collectionView.scrollEnabled = NO;
[cell.contentView addSubview:collectionView];
遵循UICollectionViewDelegate & UICollectionViewDataSource
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
return self.dataArray.count;
}
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
static NSString *ID = @"collection";
UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:ID forIndexPath:indexPath];
if (cell == nil) {
cell = [[UICollectionViewCell alloc] init];
}
cell.contentView.backgroundColor = [UIColor redColor];
return cell;
}
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"*****%@" , indexPath);
}
点击item,显示的数据
0D34E4D3-7A03-4E75-AA05-A06F9D8DC0DB.png搞定.下面是模拟器的截图
CE5A9835-960F-449B-AA4D-2F64F2C4E40D.png
注意:在cell上添加collectionView的时候,collectionView不要写成懒加载的方式.要不然会造成UITableViewCell拉长,但是UIcollectionView不会改变frame
git下载地址
https://github.com/lHuaixuan/UITableView-UICollectionView.git
网友评论