Ios 从AlertController分离而不执行操作

Ios 从AlertController分离而不执行操作,ios,Ios,我有一个加载指示器,用UIAlertController实现。当我向服务器发送身份验证请求时,我启动加载指示器。当请求成功时,我必须转到另一个ViewController并隐藏加载指示器。在执行segue之前,我需要等待AlertController解除指示完成。所以我有这样一个逻辑: private var loadingIndicator: UIAlertController? func navigateToMonitoring() { DispatchQueue.glob

我有一个加载指示器,用UIAlertController实现。当我向服务器发送身份验证请求时,我启动加载指示器。当请求成功时,我必须转到另一个ViewController并隐藏加载指示器。在执行segue之前,我需要等待AlertController解除指示完成。所以我有这样一个逻辑:

private var loadingIndicator: UIAlertController?

func navigateToMonitoring() {
        DispatchQueue.global(qos: .background).async {
            if let indicator = self.loadingIndicator {
                while !indicator.isBeingDismissed { continue }
                DispatchQueue.main.async {
                    self.performSegue(withIdentifier: "Monitoring", sender: self)
                }
            }
        }
    }
但是当这个方法被执行时,我收到一条消息-警告:试图显示不在窗口层次结构中的视图而segue没有执行

我怎样才能解决这个问题


(Swift 3,Xcode 8)

您可以创建警报并存储其引用,然后显示警报并调用API,在该API的完成块中,您可以取消警报并执行该步骤,希望这对您有意义。

不要等待!这种重复循环是可怕的。使用完成处理程序。