您好,欢迎来到花图问答。
搜索
您的当前位置:首页iOS默认页封装

iOS默认页封装

来源:花图问答

一个app肯定是有默认页,在后台拉不到数据报错,无网络,服务器在维护中等,这些都需要默认页来展示。这里说下我是怎么来处理这块的。
首先封装这个页面:就是一个自定义的view,我是直接加到baseViewController然后默认隐藏,在网络请求失败的时候调用。
封装思路:

- (void)showLoadFailedNoticeWithAction:(SEL)action isWeb:(BOOL)isWeb;

这个方法得写在.h中。这里传了2个参数action和isweb,action是在你重新加载的时候需要用到的,isweb是我自己的webview页面自己加的处理,你们可以按需求加。

- (void)showLoadFailedNoticeWithAction:(SEL)action isWeb:(BOOL)isWeb {
    _action = action;
    if (isWeb) {
        [self netState];
    }else{
        [self netState];
        self.hidden = NO;
    }
}

这是方法实现,如果不是webViewControoler里的直接展示,因为我这里的需求是webViewControoler只需要展示服务器维护时的默认页。然后继续往下看

- (void)netState {
    AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];
    switch  {
        case AFNetworkReachabilityStatusUnknown: {
            NSLog(@"未知网络");
             = [UIImage imageNamed:@"bg_wifi"];
             = @"网络出状况啦,检查后点击屏幕重试";
        }
        break;
        case AFNetworkReachabilityStatusNotReachable: {
            NSLog(@"没有网络");
             = [UIImage imageNamed:@"bg_wifi"];
             = @"网络出状况啦,检查后点击屏幕重试";
        }
        break;
        case AFNetworkReachabilityStatusReachableViaWWAN: {
            NSLog(@"手机自带网络");
             = [UIImage imageNamed:@"bg_error"];
             = @"出错啦,点击屏幕重试";
            [self serverStatus];
        }
        break;
        case AFNetworkReachabilityStatusReachableViaWiFi: {
            NSLog(@"WIFI");
             = [UIImage imageNamed:@"bg_error"];
             = @"出错啦,点击屏幕重试";
            [self serverStatus];
        }
        break;
    }
}

在有网的情况下调用了[self serverStatus]这里是拿服务端的状态,就是后台单独给的一个服务器状态的接口请求就不写出来了。
看下使用吧:(这块是写在baseViewController)

- (void)showLoadFailedNoticeWithAction:(SEL)action frame:(CGRect)frame isWeb:(BOOL)isWeb {
    if  {
         = [[KZWNetStateView alloc] initWithFrame:frame];
         = self;
        [self.view 
    }
    [self hideBGProgess];
     showLoadFailedNoticeWithAction:action isWeb:isWeb];
}
- (void)netStateViewWithAction:(SEL)action {
    [self showBGProgress];
    SuppressPerformSelectorLeakWarning([self performSelector:action withObject:nil];);
}

最后的调用:

[self showLoadFailedNoticeWithAction:@selector(loadData) frame:self.homeTableView.frame isWeb:NO];

好了,完!欢迎讨论。。。。。

Copyright © 2019- huatuowenda.com 版权所有 湘ICP备2023022495号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务