国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > iOS > 正文

iOS app中無網絡頁面的添加方法詳解

2020-07-26 02:33:44
字體:
來源:轉載
供稿:網友

前言

大家應該都會遇到這樣一個需求,在開發app的過程中,為了能有更好的用戶體驗,往往會加入沒有網絡時的頁面展示,告訴用戶當前的網絡狀態不可用,那么具體如何來實現實時監測網絡狀態的呢,就是我們接下來要討論的問題了。話不多說了,來一起看看詳細的介紹吧。

實現思路

我的實現思路大致如下:采用第三方庫RealReachability監聽網絡狀態的變化,然后在基類中添加監聽,然后在基類中提供對外的方法,用來判斷當前的網絡狀態,以便子類可以在不同的網絡狀態時做出對應的操作。最后自定義一個無網絡界面,在沒有鏈接網絡時,添加到界面上,有網絡時重新進行數據請求,并移除無網絡界面即可。

具體操作
1.項目中添加第三方庫―― RealReachability,這里我就不多做介紹,大家應該都會添加,不會的可以點此,這里會有比較詳細的說明;

2.在appdelegate開啟全局網絡監測,具體代碼如下:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { //開啟網絡監測 [GLobalRealReachability startNotifier]; return YES;}

3.定義一個枚舉,用來表示網絡鏈接的三種狀態,同時定義一個變量,用來判斷當前的網絡狀態,具體如下:

typedef NS_ENUM(NSUInteger, XSWNetWorkStatus) {  XSWNetWorkStatusNoInternet,//沒有網絡 XSWNetWorkStatusFlow,//流量連接 XSWNetWorkStatusWifi //wifi鏈接};//網絡狀態@property (nonatomic,assign) XSWNetWorkStatus netStatus;

4.在基類中給通過RealReachability 給netStatus變量賦值,并添加監聽,用來監測網絡狀態的變化,具體操作如下:

RealReachability *reachability = [RealReachability sharedInstance]; ReachabilityStatus status = [reachability currentReachabilityStatus]; switch (status) {  case 0:  {   _netStatus = XSWNetWorkStatusNoInternet;  }   break;  case 1:{      _netStatus = XSWNetWorkStatusFlow;  }   break;  case 2:{      _netStatus = XSWNetWorkStatusWifi;  }   break;  default:   break; } //監聽網絡狀態 [[NSNotificationCenter defaultCenter] addObserver:self        selector:@selector(networkChanged:)        name:kRealReachabilityChangedNotificationobject:nil];

5.實現監聽回調事件,給netStatus賦值,并提供對外的方法,便于子類對不同的網絡狀態的處理,具體操作如下:

#pragma mark ==================監聽事件的回調==================- (void)networkChanged:(NSNotification *)notification{  RealReachability *reachability = (RealReachability *)notification.object;  ReachabilityStatus status = [reachability currentReachabilityStatus];  switch (status) {    case 0:    {      _netStatus = XSWNetWorkStatusNoInternet;      [self monitorNetStateChanged:0];    }      break;    case 1:{      _netStatus = XSWNetWorkStatusFlow;      [self monitorNetStateChanged:1];    }      break;    case 2:{      _netStatus = XSWNetWorkStatusWifi;      [self monitorNetStateChanged:2];    }      break;    default:      break;  }}#pragma mark ==================網絡狀態改變==================-(void)monitorNetStateChanged:(NSInteger)netState {    //子類實現}

子類重寫monitorNetStateChanged:(NSInteger)netState方法,針對當前的網絡狀態,做出相應的操作即可,具體代碼如下:

#pragma mark ==================網絡狀態的判斷==================-(void)monitorNetStateChanged:(NSInteger)netState {  if (netState == 0) {    //沒有網絡 展示沒有網絡界面,或是提示用戶當前網絡狀態不可用  }else{    //有網,移除無網絡界面,重新進行數據請求  }}

至此,沒有網絡界面的添加就說完了,如果大家有更好的實現方法或者是對我說的方法有任何的疑問,歡迎留言,我會在第一時間回復大家。最后,將我寫的一個小demo附上,點此查看,也可以通過本地下載。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 时尚| 宣汉县| 新化县| 邢台县| 潜山县| 岗巴县| 淮阳县| 甘德县| 柘城县| 镶黄旗| 宁津县| 秦皇岛市| 霍州市| 湛江市| 新郑市| 晴隆县| 芮城县| 沙河市| 左贡县| 水城县| 宁化县| 石景山区| 长子县| 武汉市| 响水县| 康定县| 额敏县| 黎川县| 蒲江县| 永定县| 衢州市| 恩平市| 随州市| 稻城县| 铜川市| 嘉祥县| 保定市| 彩票| 依安县| 万盛区| 孟连|