关闭打开的应用后,保留ViewController模态

时间:2019-07-18 19:19:16

标签: ios swift

使用可达性来检查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)
    }
}

该函数位于整个应用程序的基本控制器中。

我无法确定我的过程是否错误或其他原因。任何建议/想法将不胜感激。


更新:因此,解决方案实际上非常简单。由于我有一个关于可达性的活动侦听器,因此只要没有实时连接,就会显示用于显示模式的功能。模态有一个按钮可以进入设置。因此,我要做的就是每当点击“设置”按钮时,关闭模态,然后在返回应用程序时,如果连接仍然不活跃,则模态将被重新创建。

1 个答案:

答案 0 :(得分:0)

您正在使用以下方式创建NoInternetViewController的新实例:

noInternetViewController = storyBoard.instantiateViewController(withIdentifier: IdentifierNames.NoInternetViewController) as! NoInternetViewController

这不是当前显示实例的视图控制器,不是

您需要将呈现的Internet视图控制器实例传递到定义了noInternetViewController的{​​{1}}成员,然后使用以下命令将其关闭:

hideMissingInternetController