UIAlert показывает два раза в iOS Swift? - PullRequest
0 голосов
/ 10 июля 2020

Я пытался показать оповещение о доступности inte rnet соединения. Реализован код для проверки inte rnet и он отлично работает. Но когда inte rnet не читается, я пытаюсь показать предупреждение, но предупреждение отображается дважды.

вот код:

   @objc func reachabilityChanged(_ note: NSNotification) {
     let reachability = note.object as! Reachability
     if reachability.connection != .unavailable {
         if reachability.connection == .wifi {
             print("Reachable via WiFi")
         } else {
             print("Reachable via Cellular")
         }
         } else {
             print("Not reachable")
         
         let alert = UIAlertController(title: "No Internet Connection", message: "Make sure your device is connected to the internet.", preferredStyle: UIAlertController.Style.alert)
         alert.addAction(UIAlertAction(title: "OK", style: UIAlertAction.Style.default, handler: nil))
 //            self.window?.rootViewController?.present(alert, animated: true, completion: nil)
        
        topMostViewController().present(alert, animated: true, completion: nil)
        
  //            let alertVC = UIAlertController(title: "No Internet Connection" , message: "Make sure your device is connected to the internet.", preferredStyle: UIAlertController.Style.alert)
  //            let okAction = UIAlertAction(title: "Okay", style: UIAlertAction.Style.cancel) { (alert) in
    ////                   exit(0) // Your code here
    //               }
 //               alertVC.addAction(okAction)
 //               DispatchQueue.main.async {
//                   var presentVC = self.window?.rootViewController
//                   while let next = presentVC?.presentedViewController {
//                       presentVC = next
//                   }
//                   presentVC?.present(alertVC, animated: true, completion: nil)
 //               }
     
             
         }
     }

 func topMostViewController() -> UIViewController {
  var topViewController: UIViewController? = UIApplication.shared.keyWindow?.rootViewController
  while ((topViewController?.presentedViewController) != nil) {
  topViewController = topViewController?.presentedViewController
  }
  return topViewController!
  }
...