iOS默認頁封裝

一個app肯定是有默認頁,在后臺拉不到數(shù)據(jù)報錯,無網(wǎng)絡(luò),服務(wù)器在維護中等,這些都需要默認頁來展示。這里說下我是怎么來處理這塊的。
首先封裝這個頁面:就是一個自定義的view,我是直接加到baseViewController然后默認隱藏,在網(wǎng)絡(luò)請求失敗的時候調(diào)用。
封裝思路:

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

這個方法得寫在.h中。這里傳了2個參數(shù)action和isweb,action是在你重新加載的時候需要用到的,isweb是我自己的webview頁面自己加的處理,你們可以按需求加。

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

這是方法實現(xiàn),如果不是webViewControoler里的直接展示,因為我這里的需求是webViewControoler只需要展示服務(wù)器維護時的默認頁。然后繼續(xù)往下看

- (void)netState {
    AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];
    switch (manager.networkReachabilityStatus) {
        case AFNetworkReachabilityStatusUnknown: {
            NSLog(@"未知網(wǎng)絡(luò)");
            self.netImage.image = [UIImage imageNamed:@"bg_wifi"];
            self.netLabel.text = @"網(wǎng)絡(luò)出狀況啦,檢查后點擊屏幕重試";
        }
        break;
        case AFNetworkReachabilityStatusNotReachable: {
            NSLog(@"沒有網(wǎng)絡(luò)");
            self.netImage.image = [UIImage imageNamed:@"bg_wifi"];
            self.netLabel.text = @"網(wǎng)絡(luò)出狀況啦,檢查后點擊屏幕重試";
        }
        break;
        case AFNetworkReachabilityStatusReachableViaWWAN: {
            NSLog(@"手機自帶網(wǎng)絡(luò)");
            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;
    }
}

在有網(wǎng)的情況下調(diào)用了[self serverStatus]這里是拿服務(wù)端的狀態(tài),就是后臺單獨給的一個服務(wù)器狀態(tài)的接口請求就不寫出來了。
看下使用吧:(這塊是寫在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];);
}

最后的調(diào)用:

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

好了,完!歡迎討論。。。。。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容