001
本demo是对 CDMEmptyPageView 的使用方法封装
使用方法:
001 将 #import "UIView+WHEmpty.h" 拷贝到工程文件中
002 参考basevc 中 对无数据无网络的配置方法
003 请求数据的时候,一句话调用
注意:设置显示的位置。
如果添加在表上 该视图是可以滑动的;
添加在self.view上 是不可滑动的,相当于覆盖了一层view在上面;
其位置需要设置下,便于视图居中 或者靠上,尤其是表有header 和footer的时候。
新的demo地址: WHEmptyDemo
002
另外一种无数据无网络使用反馈: DZNEmptyDataSet
具体使用方法:参见demo上详细说明。
反馈:在table表或者cellectionView 滑动的时候,无数据无网络的图片就已经显示了,所以对这一点在意的,可以换一种实现方式
003
比如可以写一个baseTableVeiw
.h文件 继承tableview
#import <UIKit/UIKit.h>
@interface DSTableView : UITableView
/**
* 当数据为空或者无网络时设置背景图片
*
* @param strNodataImage 无数据时的图片
* @param strNoNetworkImage 无网络时的图片
*/
- (void)setupWithNodataImage:(NSString*)strNodataImage andNoNetworkImage:(NSString*)strNoNetworkImage;
@end
.m 文件
WHNetWorkStatus 参见:001 中新的demo地址
#import "DSTableView.h"
#import "#import "WHNetWorkStatus.h"
@interface DSTableView()
@property (nonatomic, strong) UIImage *imgNoData;//没有数据时的背景图片
@property (nonatomic, strong) UIImage *imgNoNetwork;//没有网络时的背景图片
@property (nonatomic, strong) UIImageView *imvBgDefault;//异常情况下显示默认图片
@end
@implementation DSTableView
/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect {
// Drawing code
}
*/
- (void)setupWithNodataImage:(NSString*)strNodataImage andNoNetworkImage:(NSString*)strNoNetworkImage{
self.imgNoData = [UIImage imageNamed:strNodataImage];
self.imgNoNetwork = [UIImage imageNamed:strNoNetworkImage];
}
- (void)reloadData{
[super reloadData];
NSInteger sections = [self numberOfSections];
BOOL hasRows = NO;
for (int i = 0; i < sections; i++) {
BOOL sectionHasRows = ([self numberOfRowsInSection:i] > 0) ? YES : NO;
if (sectionHasRows) {
hasRows = YES;
break;
}
}
if (sections == 0 || hasRows == NO)
{
UIImage *imgTemp;
if ([WHNetWorkStatus sharedNetWorkStatus].netWorkStatus == NotReachable) {
if (!self.imgNoNetwork) {
self.imgNoNetwork = [UIImage imageNamed:@"emptyNoNetwork"];
}
imgTemp = self.imgNoNetwork;
}else{
if (!self.imgNoData) {
self.imgNoData = [UIImage imageNamed:@"emptyNoCustomer"];
}
imgTemp = self.imgNoData;
}
if (!_imvBgDefault) {
_imvBgDefault = [[UIImageView alloc] initWithImage:imgTemp];
// Add image view on top of table view
[self addSubview:_imvBgDefault];
}
self.imvBgDefault.frame = CGRectMake(0, 0, imgTemp.size.width, imgTemp.size.height);
self.imvBgDefault.center = CGPointMake(self.center.x, self.center.y - 80);
self.imvBgDefault.hidden = NO;
}else{
if (_imvBgDefault) {
self.imvBgDefault.hidden = YES;
}
}
}
@end
004
自己去配置不同的显示view :请求中 无数据 无网络 三个独立的view
然后分情况去显示。
建议统一配置在basevc中,其他vc 继承 basevc 这样便于调用。
网友评论