在演示过程中显示UIAlertController

时间:2019-01-14 18:02:37

标签: swift uialertcontroller

我正试图立即显示两个不同的警报。第一个是加载指示器。第二个是警报,告诉用户他们正在执行的操作是否成功,或者是否遵循UDP消息。我已出于演示目的简化了代码。

我的问题是,尽管我在调用第二个警报之前就关闭了loadingAlert,但仍然出现错误:

警告:演示过程中,尝试在ViewController上呈现UIAlertController!

我的第二个警报从不显示。

这是我的Swift 4代码:

func getUpdate()
{    
    let loading = alert(title: "Performing Task...")

    DispatchQueue.global(qos: .userInitiated).async {
        let server:UDPServer=UDPServer(address:"0.0.0.0", port:5006)
        let (data,_,_) = server.recv(1024)

        DispatchQueue.main.async
        {
            loading.dismiss(animated: false, completion: nil)

            OperationQueue.main.addOperation
            {
                alert(title: "How can I show this alert?")
            }
        }
    }
}

func alert(title:String) -> UIAlertController
{
    let alertController = UIAlertController(title: title, message: "", preferredStyle: UIAlertControllerStyle.alert)
    ...
    rootViewController?.present(alertController, animated: true, completion: nil)

    return alertController
}

做这件事的最好方法是什么?

1 个答案:

答案 0 :(得分:3)

在对line=${line%$'\r'}的调用中使用completion参数:

dismiss