使用可达性来检查Internet连接。我使用它来显示模态,并显示一条消息,要求使用该应用程序需要活动连接。这是全局的,因此它在appdelegate中具有侦听器。在模式上,我有一个按钮可以进入设置。此时一切正常,并且根据需要显示模式。问题是,在用户启用互联网并返回到应用程序后,我无法找到一种消除模态的方法。确实会调用该函数,只是模态什么都没有发生。这是我尝试在返回时关闭模式的代码,它不起作用。
var noInternetViewController: NoInternetViewController!
func hideMissingInternetController(){
let storyBoard = UIStoryboard(name: IdentifierNames.ModalsStoryBoard, bundle: nil)
noInternetViewController = storyBoard.instantiateViewController(withIdentifier: IdentifierNames.NoInternetViewController) as! NoInternetViewController
if noInternetViewController.isViewLoaded && noInternetViewController.view.window != nil {
noInternetViewController.dismiss(animated: true, completion: nil)
}
}
该函数位于整个应用程序的基本控制器中。
我无法确定我的过程是否错误或其他原因。任何建议/想法将不胜感激。
更新:因此,解决方案实际上非常简单。由于我有一个关于可达性的活动侦听器,因此只要没有实时连接,就会显示用于显示模式的功能。模态有一个按钮可以进入设置。因此,我要做的就是每当点击“设置”按钮时,关闭模态,然后在返回应用程序时,如果连接仍然不活跃,则模态将被重新创建。
答案 0 :(得分:0)
您正在使用以下方式创建NoInternetViewController
的新实例:
noInternetViewController = storyBoard.instantiateViewController(withIdentifier: IdentifierNames.NoInternetViewController) as! NoInternetViewController
这不是当前显示实例的视图控制器,不是。
您需要将呈现的Internet视图控制器实例传递到定义了noInternetViewController
的{{1}}成员,然后使用以下命令将其关闭:
hideMissingInternetController