代码之家  ›  专栏  ›  技术社区  ›  Ram

IOS Swift面临可达性问题

  •  1
  • Ram  · 技术社区  · 8 年前

    我在该项目的一个演示项目中创建了可达性。如果有internet连接,我有两个视图控制器。如果没有internet连接,我显示的是OnlineViewController。如果没有internet连接,我显示的是OfflineViewController。请参阅我在Appdelegate中实现的以下代码。敏捷的

     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个故事板和多个ViewController。所以,如果有互联网连接,如何再次显示用户当前屏幕。

    4 回复  |  直到 8 年前
        1
  •  1
  •   Ram    8 年前

    我用以下代码解决了我的问题。我不确定我的答案是对还是错。

    @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()
        }
    }
    
        2
  •  0
  •   swapnil patel    8 年前

    同样,在项目中使用此功能并将用户导航到特定的视图控制器。

    有关更多详细信息,请参阅此链接。 Check for internet connection with Swift

        3
  •  0
  •   Nirav Hathi    8 年前
    import UIKit
    import Reachability
    class CommonUtility: NSObject {
    
        class func isConnected() -> Bool{
            let reachability:Reachability = Reachability.forInternetConnection()
            let networkStatus = reachability.currentReachabilityStatus().rawValue
            return networkStatus != 0
       }
    }
    
        4
  •  0
  •   Vadlapalli Masthan    8 年前

    //使用下面的链接下载它,然后将可访问性文件夹拖放到您的项目中

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

    pod“可达性Wift”,“~>4.1'

    注意:这里的可达性swift版本基于swift版本,您必须输入

    let reachability = Reachability()!
    
      override func viewDidLoad()
      {
        super.viewDidLoad()
      }
    
    
     if (reachability.isReachable)
       {
             // your code
       }
     else
       {
           // your code
       }