インターネットに接続している場合、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
で
私は、noInternetViewControllerが表示され、私が再接続した後、reachabilityChanged(注:NSNotification)funcがトリガーされなかったと認識しました。私はそれがremoveObserverのためだと思うが、私はそれを使う正しい方法を見つけることができなかった。 – Brkr
'noInternet = true; ifInternet == true {'上の行でtrueに設定すると、常にtrueになります。 == trueを追加するBTWは冗長です –
あなたは 'self.dismissViewController'を使用していますが、noInternetComtrollerを終了する必要があります。あなたはブール値ではなくプロパティに提示されたcomtrollerへの参照を保持することができます – Paulw11