【iOS 0 行代码系列】之 0 行代码实现TableView,CollectionView无数据占位图与文字

一、前言

如果你还没有看过下面的文章,可以花点时间看看

1.一行代码完成“空TableView占位视图”管理:
https://www.jianshu.com/p/0a5f6b221ab6
原理:

1.获取 Section 的数量

2.获取每一个 Section 当中 Cell 的数量


2.UITableView没数据时用户提示如何做?
https://www.jianshu.com/p/e39699b0d134
原理:

基于 [dataSource count];

一行代码实现


3.iOS 0行代码实现 TableView 无数据时展示占位视图
https://www.jianshu.com/p/246b445ec4e3
原理:

1.获取 Section 的数量

2.获取每一个 Section 当中 Cell 的数量


二、正题:

1.原理

UITableView有一个属性:

@property (nonatomic, readonly) NSArray<__kindof UITableViewCell *> *visibleCells;

UICollectionView有同样的一个属性:

@property (nonatomic, readonly) NSArray<__kindof UICollectionViewCell *> *visibleCells;

都是获取可见的 Cell

可以根据 reload 之后,可见 Cell 的数量来判断,列表是否为空。

2.遇到的问题

collectionView 在 reload 之后 self.visibleCells.count 是 0

经查找,需要先调用 [self layoutIfNeeded];才行

参考:

https://stackoverflow.com/questions/26055626/uicollectionview-visiblecells-returns-0-before-scrolling

3.通过实现代理方法来定制图片与文字,以及代理返回的 emptyView 进行更多定制

3.1collectionView 的代理方法

@protocol JHNoDataUICollectionViewDelegate <NSObject>

@optional

/// offer a image to show some infomation for user.
-(UIImageView *)imageViewForCollectionViewWhenDataSourceIsEmpty;

/// offer a label to show some infomation for user.
-(UILabel *)labelForCollectionViewWhenDataSourceIsEmpty;

/// the empty view that add to tableView.
-(void)emptyViewForCollectionViewWhenDataSourceIsEmpty:(UIView *)emptyView;

@end

3.2tableView 的代理方法

@protocol JHNoDataUITableViewDelegate <NSObject>

@optional

/// offer a image to show some infomation for user.
-(UIImageView *)imageViewForTableViewWhenDataSourceIsEmpty;

/// offer a label to show some infomation for user.
-(UILabel *)labelForTableViewWhenDataSourceIsEmpty;

/// the empty view that add to tableView.
-(void)emptyViewForTableViewWhenDataSourceIsEmpty:(UIView *)emptyView;

@end

地址:

https://github.com/xjh093/JHNoDataEmptyViewForT-C

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • PLEASE READ THE FOLLOWING APPLE DEVELOPER PROGRAM LICENSE...
    念念不忘的阅读 14,597评论 5 6
  • afinalAfinal是一个android的ioc,orm框架 https://github.com/yangf...
    passiontim阅读 15,727评论 2 45
  • 由于第一天开业!全部特价!仅限1天!!!你找不到的低价~~~ 全国移动(省内流量) 移动直充最活动 ,流量秒到,原...
    花衬衫衬衫花阅读 1,573评论 0 0
  • 这段看了孙红雷主演的好先生,说实在的,我并不喜欢孙红雷的外形,但好先生这个角色还真适合他,不看颜值,看气质。把一个...
    一路16阅读 2,875评论 0 0
  • 快放假了,赶紧的吧,都等得不耐烦了,八点半开会,现在十点半了。 再不开就走了啊,今天不开了? 我和敏佳在门口等车,...
    一粟小阅读 2,675评论 0 0