如果你还没有看过下面的文章,可以花点时间看看
>>>>>1.一行代码完成“空TableView占位视图”管理:
原理:
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;
可以根据 reload 之后,可见 Cell 的数量来判断,列表是否为空。
2.遇到的问题
collectionView 在 reload 之后 self.visibleCells.count 是 0
经查找,需要先调用 [self layoutIfNeeded]; 才行
参考:
3.通过实现代理方法来定制图片与文字,以及代理返回的 emptyView 进行更多定制
>>>>> collectionView 的代理方法
@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
>>>>> tableView 的代理方法
@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