美文网首页
无数据无网络的封装

无数据无网络的封装

作者: 胖红Red | 来源:发表于2018-01-30 15:17 被阅读59次

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

    相关文章

      网友评论

          本文标题:无数据无网络的封装

          本文链接:https://www.haomeiwen.com/subject/errczxtx.html