一個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];
好了,完!歡迎討論。。。。。