iOS Developerios实用开发技巧

iOS默认页封装

2017-04-12  本文已影响386人  moonCoder

一个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];

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

上一篇下一篇

猜你喜欢

热点阅读