中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何實現iOS app中無網絡頁面的添加功能

發布時間:2021-06-28 10:18:29 來源:億速云 閱讀:148 作者:小新 欄目:移動開發

小編給大家分享一下如何實現iOS 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:kRealReachabilityChangedNotification
object: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{
    //有網,移除無網絡界面,重新進行數據請求
  }
}

以上是“如何實現iOS app中無網絡頁面的添加功能”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

湘西| 石首市| 仁化县| 龙胜| 红安县| 永宁县| 六枝特区| 油尖旺区| 黑水县| 天台县| 丹寨县| 扬中市| 江安县| 大厂| 龙岩市| 西乡县| 天台县| 四平市| 清丰县| 安徽省| 通城县| 分宜县| 夏邑县| 大安市| 时尚| 民丰县| 南木林县| 怀集县| 金寨县| 新河县| 定结县| 茶陵县| 喜德县| 磐安县| 泽库县| 浪卡子县| 鄂尔多斯市| 葵青区| 新乡市| 永宁县| 库伦旗|