Mac BCCollectionView的使用(三)
来源:互联网 发布:sx2150k基本数据 编辑:程序博客网 时间:2024/04/30 10:20
有时候需要设置BCCollectionView的header信息。介绍下BCCollectionView的使用方式。
1. 加载数据
这里跟不适用header时的加载方法不一样。
NSArray *dataSource = [[NSArray alloc] initWithObjects:@"data1", @"data2", @"data3", @"data4", nil]; BCCollectionViewGroup *viewGroup = [[BCCollectionViewGroup alloc] init]; viewGroup.isCollapsed = NO; NSRange range = NSMakeRange(0, [self.dataSource count] - 1); viewGroup.itemRange = range; // 这里设置Group对应的dataSource的索引 // 这里不进行retain的话,会导致crash, 还没查具体原因 NSArray *group = [[NSArray arrayWithObjects:viewGroup, nil] retain]; [self reloadDataWithItems:dataSource groups:group emptyCaches:YES];
2. 实现回调
2.1 返回header的高
- (NSUInteger)groupHeaderHeightForCollectionView:(BCCollectionView *)collectionView { return 140; }2.2 创建header
- (NSViewController *)collectionView:(BCCollectionView *)collectionView headerForGroup:(BCCollectionViewGroup *)group { // 这里需要创建并返回一个自己定义的header对象 BCCollectionHeaderViewController *headerViewController = [[BCCollectionHeaderViewController alloc] initWithNibName:@"BCCollectionHeaderViewController" bundle:nil]; return headerViewController; }
另外,当使用BCCollectionView的header的时候,BCCollectionView存在BUG。 当hearder的高度是可以动态变化时,增加header的高,需要重新加载数据,这时会刷新header数据和当前区域可见的cell的数据。但是当Cell区域由屏幕内可见变为不可见时,系统会重刷所有Cell内容。其实现在Cell不在当前可视区域内显示,所以没有必要刷新Cell区域,而只需要刷新header区域。规避这种问题的一种方法为:当重新加载数据时,判断加载是否完成,如果未完成,则当前界面外的cell不进行刷新。示例代码为:
void(^reloadcompletionBlock)(void) = ^(void) { isLoading = NO; // 加载完成,取消正在加载状态 }; isLoading = YES; // 设置正在加载状态 [collectionView reloadDataWithItems:dataSource groups:group emptyCaches:YES completionBlock:reloadcompletionBlock]; - (void)collectionView:(BCCollectionView *)collectionView willShowViewController:(NSViewController *)viewController forItem:(id)anItem { // 如果正在加载,则不设置当前屏幕区域外的Cell数据 if (isLoading) { if (viewController.view.frame.origin.y > self.window.frame.size.height) { return; } } }
- Mac BCCollectionView的使用(三)
- Mac BCCollectionView的使用(一)
- Mac BCCollectionView的使用(二)
- 在Mac上Git的使用(三)
- 在Mac上Git的使用(三)
- mac使用技巧三则
- mac使用技巧三则
- Mac快捷使用三:Mac截图扩展功能
- git mac使用初体验(三)
- Mac pro使用的那些坑(三)git打开指定文件的窗口
- MAC View的使用
- mac机的使用
- Mac OS使用技巧之三:发射无线网络信号的方法
- Git的使用三(版本回退)仅限Mac亲测
- 关于新款Mac电脑无法使用三指拖动的问题
- 取得MAC地址的三种方法
- Mac添加环境变量的三种方法
- Mac添加环境变量的三种方法
- 贝儿的伤感爱情空间日志发布:宝贝,快回头吧,我等你
- c语言学习笔记十八
- hdu 4301 Divide Chocolate
- Java---Socket编程基础理论
- 含对象成员类的构造顺序
- Mac BCCollectionView的使用(三)
- 范特西的伤感空间日志推荐:我在风中颤抖,你却再难回头
- 微软等数据结构+算法面试100题全部答案集锦
- 简单通俗的由入侵反应如何加强网站及服务器部署
- 按文件字符集类型读取配置文件
- 大数乘法
- 织梦如何在列表语句中做if判断
- 木头人的伤感空间日志发布:再美只是瞬间而已~~~
- ARM汇编程序---1-100累加和一个简单排序