前序
最近在一家公司实习,学习一些ios的知识。因为以前没有使用过UICollectionView,所以带我的导师让我仿照公司APP中的一个UICollectionView自己做一个练练手。期间遇到了一些问题:我们知道我们一般在UITableView中只设置一个headerView与footerView,但是我在UICollection中使用的时候,出现了每个Section中都有一个headerView和footerView。其实这是正确的,并没有什么错误,只是不是我们想要的结果(我只想一个UICollectionView只有一个headerView和footerView),所以我们要做一些处理。
了解Section、indexPath、row的区别
row和section是在UITableView中定义的
indexPath.section:代表了单元格(Cell)的第几个分区
indexPath.row:代表分区的第几行
一定要理解上面这两个概念,因为这很重要。
一般情况下我们使用UICollectionView的时候并没有设置分区,我们只是使用一个分区,系统默认的也是一个分区。
正是因为只有一个分区,所以我们才会显示一个headerView和一个footerView。如果我们设置了几个分区的话,那么所有的分区都会有一个headerView和footerView。这里我就要说一下UICollectionView和UITableView加载headerView与footerView的区别。
UITableView加载headerView与footerView
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section;
这里后面的参数是section;
UICollectionView加载headerView与footerView
- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath;
这后面的参数是indexPath;
对于UITableView中headerView、footerView的加载方法网上已经有很多了,这里就不做介绍了!下面来说说UICollectionView的加载。
解决方案
正如上面说的,如果我们只有一个分区的话,那我们可以不用进行判断,但是当我们有几个分区的时候,我们要在加载headerView和footerView的时候加以判断。
你以为这样就可以了吗?如果你只是设置这个的话,那么你就错了,除此之外你还要设置布局代码。
结束语
以上就是本人的解决方案,也不知道理解的是否到位,希望您可以指出我的错误之处,大家一起相互学习。最后,谢谢您的观看。
网友评论