2016-12-10 32 views
1

インターネットに接続している場合、View Controllerを終了しようとしています。インターネットがない場合は、noInternetViewControllerを表示しますが、インターネットに再接続すると、noInternetViewControllerビューは終了しませんでした。インターネットに接続している場合、View Controllerを閉じるにはどうすればいいですか?

override func viewWillDisappear(_ animated: Bool) { 
    super.viewWillDisappear(animated) 

    NotificationCenter.default.removeObserver(self, name: ReachabilityChangedNotification, object: reachability) 
} 

func reachabilityChanged(note: NSNotification) { 
    let reachability = note.object as! Reachability 

    if reachability.isReachable { 
     if noInternet == true { 
      DispatchQueue.main.async { 
       self.noInternet = false 
       self.dismiss(animated: true, completion: nil) 
      } 
     } 
    } else { 
     noInternet = true 
     if noInternet == true { 
      DispatchQueue.main.async { 
       let storyboard = UIStoryboard(name: "Main", bundle: nil) 
       let noInternetViewController = storyboard.instantiateViewController(withIdentifier: "NoInternetViewController") as! NoInternetViewController 
       noInternetViewController.modalPresentationStyle = UIModalPresentationStyle.overFullScreen 
       self.present(noInternetViewController, animated: true, completion: nil) 
      } 
     } 

    } 
} 

そしてNoInternetViewController:あなたのための

import UIKit 

class NoInternetViewController: UIViewController { 

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

おかげで、あなたは同様にそれにObserverを追加することができ、あなたのNoInternetViewController

+0

私は、noInternetViewControllerが表示され、私が再接続した後、reachabilityChanged(注:NSNotification)funcがトリガーされなかったと認識しました。私はそれがremoveObserverのためだと思うが、私はそれを使う正しい方法を見つけることができなかった。 – Brkr

+1

'noInternet = true; ifInternet == true {'上の行でtrueに設定すると、常にtrueになります。 == trueを追加するBTWは冗長です –

+0

あなたは 'self.dismissViewController'を使用していますが、noInternetComtrollerを終了する必要があります。あなたはブール値ではなくプロパティに提示されたcomtrollerへの参照を保持することができます – Paulw11

答えて

1

に役立ちます。あなたが接続を受け取ったとき、自分自身を却下するセレクタを起動するための通知を投稿します。

override func viewDidLoad() { 
    super.viewDidLoad() 
    NotificationCenter.default.addObserver(self, selector: #selector(receivedConnection), name: NSNotification.Name.init(rawValue: "ReceivedConnection"), object: nil) 
} 

func receivedConnection() { 
    self.dismiss(animated: true, completion: nil) 
} 
+0

これは今働いています – Brkr

関連する問題