面对可达性问题IOS Swift

问题描述 投票:1回答:4

我在该项目中的一个Demo项目中创建了可达性我有两个视图控制器,如果互联网连接在那里我正在显示OnlineViewController如果互联网连接不存在我正在显示OfflineViewController。请参阅我在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
    }

我的功能就像这样

 @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")

        }

    }

现在我的问题是我想在我的实时项目中实现同样的事情,我有3个故事板和多个viewcontrollers。那么如果有互联网连接,如何再次显示用户当前屏幕。

ios swift reachability
4个回答
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
投票

以同样的方式在项目中使用此函数并将用户导航到特定的视图控制器。

有关详细信息,请参阅此链接。 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
投票

//使用下面的链接下载它,只需将Reachability Folder拖放到您的项目中即可

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

要么

pod'ReachabilitySwift','〜> 4.1'

注意:ReachabilitySwift版本基于您必须安装的swift版本

let reachability = Reachability()!

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


 if (reachability.isReachable)
   {
         // your code
   }
 else
   {
       // your code
   }
© www.soinside.com 2019 - 2024. All rights reserved.