无数据无网络的封装

2018-01-30  本文已影响59人  胖红Red

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 这样便于调用。

上一篇下一篇

猜你喜欢

热点阅读