iOS默认页封装

作者: moonCoder | 来源:发表于2017-04-12 15:30 被阅读386次

    一个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 (manager.networkReachabilityStatus) {
            case AFNetworkReachabilityStatusUnknown: {
                NSLog(@"未知网络");
                self.netImage.image = [UIImage imageNamed:@"bg_wifi"];
                self.netLabel.text = @"网络出状况啦,检查后点击屏幕重试";
            }
            break;
            case AFNetworkReachabilityStatusNotReachable: {
                NSLog(@"没有网络");
                self.netImage.image = [UIImage imageNamed:@"bg_wifi"];
                self.netLabel.text = @"网络出状况啦,检查后点击屏幕重试";
            }
            break;
            case AFNetworkReachabilityStatusReachableViaWWAN: {
                NSLog(@"手机自带网络");
                self.netImage.image = [UIImage imageNamed:@"bg_error"];
                self.netLabel.text = @"出错啦,点击屏幕重试";
                [self serverStatus];
            }
            break;
            case AFNetworkReachabilityStatusReachableViaWiFi: {
                NSLog(@"WIFI");
                self.netImage.image = [UIImage imageNamed:@"bg_error"];
                self.netLabel.text = @"出错啦,点击屏幕重试";
                [self serverStatus];
            }
            break;
        }
    }
    

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

    - (void)showLoadFailedNoticeWithAction:(SEL)action frame:(CGRect)frame isWeb:(BOOL)isWeb {
        if (!self.netStatueView) {
            self.netStatueView = [[KZWNetStateView alloc] initWithFrame:frame];
            self.netStatueView.delegate = self;
            [self.view addSubview:self.netStatueView];
        }
        [self hideBGProgess];
        [self.netStatueView 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];
    

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

    相关文章

      网友评论

        本文标题:iOS默认页封装

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