2017-12-21 16 views
1

私はそのプロジェクトの1つのデモプロジェクトに到達可能性を作成しましたインターネット接続があれば私は2つのビューコントローラを持っています。インターネット接続がない場合はOnlineViewControllerを表示しています。私がAppdelegate.swiftに実装した以下のコードを見てください。到達可能性に直面する問題

var reachability:Reachability? 
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 

     NotificationCenter.default.addObserver(self, selector: #selector(reachabilityStatusChanged(_:)), name: .reachabilityChanged, object: nil) 
     reachability = Reachability.forInternetConnection() 
     reachability!.startNotifier() 
      return true 
    } 

そして、私の機能は今、私の質問は私が3枚の絵コンテとみとめviewcontrollersを持ってそのプロジェクトで私のリアルタイムのプロジェクトで同じことを実現したいです。この

@objc func reachabilityStatusChanged(_ sender: NSNotification) { 

     var remoteHostStatus = self.reachability!.currentReachabilityStatus() 

     if (remoteHostStatus == NotReachable) 
     { 
      print ("no net") 
      let testController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "OfflineViewController") as! OfflineViewController 
      window!.rootViewController = testController 
      window!.makeKeyAndVisible() 
     } 
     else 
     { 
      let testController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "OnlineViewController") as! OnlineViewController 
      window!.rootViewController = testController 
      window!.makeKeyAndVisible() 
      print (" wifi") 

     } 

    } 

のようなものです。どのようにインターネット接続があれば、再度現在の画面を表示する方法。

+0

ただシングルトンクラスに入れてください –

+0

少し簡単に教えてください。 – Ram

答えて

1

私は次のコードで私の問題を解決しました。私の答えが正しいかどうかは分かりません。

@objc func reachabilityStatusChanged(_ sender: NSNotification) { 

     var remoteHostStatus = self.reachability!.currentReachabilityStatus() 

     if (remoteHostStatus == NotReachable) 
     { 
      print ("no net") 
      let testController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "OfflineViewController") as! OfflineViewController 
      window!.rootViewController = testController 
      window!.makeKeyAndVisible() 
     } 
     else 
     { 
      UserTypeValidateCall() 

     } 

    }. 

//MARK:- Validating User Type 
func UserTypeValidateCall() 
{ 
    let Usertype = UserDefaults.standard.string(forKey: "Usertype") 
    print("Usertype-----",Usertype) 

    if((Usertype) != nil) 
    { 
     if (Usertype?.isEqual("Parent"))! 
     { 
      ParentDashBoardEnter() 
     } 
     else if (Usertype?.isEqual("Employee"))! 
     { 
      TeacherDashBoardEnter() 
     } 
     else if (Usertype?.isEqual("Admin"))! 
     { 
      AdminDashBoardEnter() 
     } 
    } 
    else 
    { 
     LoginScreenEnter() 
    } 
} 
0

同じように、この関数をプロジェクトで使用して、特定のView Controllerに移動します。

詳細については、このリンクをご覧ください。 Check for internet connection with Swift

0
import UIKit 
import Reachability 
class CommonUtility: NSObject { 

    class func isConnected() -> Bool{ 
     let reachability:Reachability = Reachability.forInternetConnection() 
     let networkStatus = reachability.currentReachabilityStatus().rawValue 
     return networkStatus != 0 
    } 
} 
+0

まずはクラスにご利用いただきありがとうございます。 – Ram

+0

そのクラスであれば、どのクラスでもCommonUtility.isConnected(){}を使用することができます –

0

//リンクの下に使用し、それをダウンロードして、ちょうどあなたのプロジェクトに到達可能性のフォルダをドラッグ&ドロップ

https://github.com/ashleymills/Reachability.swift

または

ポッド 'ReachabilitySwift'、 '〜> 4.1'

注:ReachabilitySwiftバージョンは、あなたがinsatllする必要がある迅速なバージョンに基づいています

let reachability = Reachability()! 

    override func viewDidLoad() 
    { 
    super.viewDidLoad() 
    } 


if (reachability.isReachable) 
    { 
     // your code 
    } 
else 
    { 
     // your code 
    } 
+0

後半の返事は残念です。私はすべてのクラスの到達可能性をチェックするか、他のオプションを直接チェックする必要があります。 – Ram

+0

あなたはすべてのクラスをチェックする必要があります(私はあなたが欲しい場所を意味します)、appdelegateにオプションはありません。 –

関連する問題