Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我的弹出窗口延迟(Swift)?_Swift_Popup_Delay - Fatal编程技术网

为什么我的弹出窗口延迟(Swift)?

为什么我的弹出窗口延迟(Swift)?,swift,popup,delay,Swift,Popup,Delay,我是一个新手Swift程序员,正在开发他的第一个应用程序。作为一个简单游戏的一部分,我执行一个函数(F),其中的代码如下 if let vc = storyboard?.instantiateViewController(withIdentifier: "P2CompetitionPopUpId") as? P2_Competition_Pop_Up { vc.modalPresentationStyle = .overCurrentContext

我是一个新手Swift程序员,正在开发他的第一个应用程序。作为一个简单游戏的一部分,我执行一个函数(F),其中的代码如下

if let vc = storyboard?.instantiateViewController(withIdentifier: 
"P2CompetitionPopUpId") as? P2_Competition_Pop_Up {
            vc.modalPresentationStyle = .overCurrentContext
            present(vc, animated: true, completion: nil)
        } else {
            print("error creating P2_Competion_Pop_Up")

然而,当我运行这个函数时,弹出窗口直到整个函数(F)执行之后才会出现。为什么会这样?如何让函数(F)在弹出窗口出现时暂停,并在弹出窗口关闭后恢复?

将其包装为异步调用:

DispatchQueue.main.async {
    if let vc = self.storyboard?.instantiateViewController(withIdentifier: "P2CompetitionPopUpId") as? P2_Competition_Pop_Up {
        vc.modalPresentationStyle = .overCurrentContext
        self.present(vc, animated: true, completion: nil)
    } else {
        print("error creating P2_Competion_Pop_Up")
}

显示整个函数,以便更好地了解如何调用它。当另一个弹出窗口关闭时,将调用该函数。我认为这里的周边代码无关紧要。这与弹出窗口有特别的关系吗?延迟打开弹出窗口是一件很奇怪的事情。代码是从主队列调用的吗?不确定主队列是什么。以前发生过这样的情况:主视图控制器加载,运行加载代码,按下按钮,弹出窗口打开,按下按钮,弹出窗口关闭,主视图中的一个功能(在弹出窗口关闭时)开始运行,运行中途发现上面的代码,不运行它,但是完成函数的其余部分,然后运行它。希望这有帮助。这似乎没有改变任何事情。或者一开始它给出了两个关于内隐自我的错误信息。当我在“故事板”和“现在”之前加上“自我”时,它们就消失了。