ios collectionview 怎么获取header的indexpath

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ios collectionview 怎么获取header的indexpath相关的知识,希望对你有一定的参考价值。

参考技术A 下面给出一些常用方法,具体的使用可以参考Demo:点我下载 苹果官方Demo:点我下载
[objc] view plaincopy
- (void)viewDidLoad

[super viewDidLoad];
self.title = @"UICollectionView学习";

//通过Nib生成cell,然后注册 Nib的view需要继承 UICollectionViewCell
[self.collectionView registerNib:[UINib nibWithNibName:@"SQCollectionCell" bundle:nil] forCellWithReuseIdentifier:kcellIdentifier];

//注册headerView Nib的view需要继承UICollectionReusableView
[self.collectionView registerNib:[UINib nibWithNibName:@"SQSupplementaryView" bundle:nil] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:kheaderIdentifier];
//注册footerView Nib的view需要继承UICollectionReusableView
[self.collectionView registerNib:[UINib nibWithNibName:@"SQSupplementaryView" bundle:nil] forSupplementaryViewOfKind:UICollectionElementKindSectionFooter withReuseIdentifier:kfooterIdentifier];
//
self.collectionView.allowsMultipleSelection = YES;//默认为NO,是否可以多选



- (void)didReceiveMemoryWarning

[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.

#pragma mark -CollectionView datasource
//section
- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView

return 2;

//item个数
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section

return 6;



// The cell that is returned must be retrieved from a call to -dequeueReusableCellWithReuseIdentifier:forIndexPath:
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath

//重用cell
UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:kcellIdentifier forIndexPath:indexPath];
//赋值
UIImageView *imageView = (UIImageView *)[cell viewWithTag:1];
UILabel *label = (UILabel *)[cell viewWithTag:2];
NSString *imageName = [NSString stringWithFormat:@"%ld.JPG",(long)indexPath.row];
imageView.image = [UIImage imageNamed:imageName];
label.text = imageName;

cell.backgroundColor = [UIColor redColor];
return cell;


// The view that is returned must be retrieved from a call to -dequeueReusableSupplementaryViewOfKind:withReuseIdentifier:forIndexPath:
- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath

NSString *reuseIdentifier;
if ([kind isEqualToString: UICollectionElementKindSectionFooter ])
reuseIdentifier = kfooterIdentifier;
else
reuseIdentifier = kheaderIdentifier;


UICollectionReusableView *view = [collectionView dequeueReusableSupplementaryViewOfKind :kind withReuseIdentifier:reuseIdentifier forIndexPath:indexPath];

UILabel *label = (UILabel *)[view viewWithTag:1];
if ([kind isEqualToString:UICollectionElementKindSectionHeader])
label.text = [NSString stringWithFormat:@"这是header:%d",indexPath.section];

else if ([kind isEqualToString:UICollectionElementKindSectionFooter])
view.backgroundColor = [UIColor lightGrayColor];
label.text = [NSString stringWithFormat:@"这是footer:%d",indexPath.section];

return view;

//定义每个UICollectionViewCell 的大小
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath

return CGSizeMake(60, 80);

//定义每个Section 的 margin
-(UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section

return UIEdgeInsetsMake(15, 15, 5, 15);//分别为上、左、下、右

//返回头headerView的大小
-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section
CGSize size=320,45;
return size;

//返回头footerView的大小
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForFooterInSection:(NSInteger)section

CGSize size=320,45;
return size;

//每个section中不同的行之间的行间距
- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section

return 10;

//每个item之间的间距
//- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section
//
// return 100;
//
//选择了某个cell
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath

UICollectionViewCell *cell = [collectionView cellForItemAtIndexPath:indexPath];
[cell setBackgroundColor:[UIColor greenColor]];

//取消选择了某个cell
- (void)collectionView:(UICollectionView *)collectionView didDeselectItemAtIndexPath:(NSIndexPath *)indexPath

UICollectionViewCell *cell = [collectionView cellForItemAtIndexPath:indexPath];
[cell setBackgroundColor:[UIColor redColor]];
本回答被提问者和网友采纳
参考技术B // 自定义头部

- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath
这里就可以拿到indexPath。

以上是关于ios collectionview 怎么获取header的indexpath的主要内容,如果未能解决你的问题,请参考以下文章

ios collectionview 怎么使cell滚动到指定的位置

如何从collectionview的数据源中获取项目数

如何从 ALASSET ios 获取视频大小

iOS - 如何使用自定大小的 CollectionView 单元格设置锚点以调整换行符的间距

Coredata + CollectionView

iOS 10 collectionView:prefetchItemsAt 未调用