在加载表视图时关闭 UIAlert控制器



我将一个UIAlertController编程为加载屏幕

let waitActivityAlert = UIAlertController(title: nil, message: "Please wait...n", preferredStyle: .alert)
let spinner = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.whiteLarge)
func letsspin(){
    spinner.translatesAutoresizingMaskIntoConstraints = false
    waitActivityAlert.view.addSubview(spinner)

    let xConstraint = NSLayoutConstraint(item: spinner, attribute: .centerX, relatedBy: .equal, toItem: waitActivityAlert.view, attribute: .centerX, multiplier: 1, constant: 0)
    let yConstraint = NSLayoutConstraint(item: spinner, attribute: .centerY, relatedBy: .equal, toItem: waitActivityAlert.view, attribute: .centerY, multiplier: 1.4, constant: 0)
    NSLayoutConstraint.activate([ xConstraint, yConstraint])
    spinner.isUserInteractionEnabled = false

    spinner.color = UIColor.black
    spinner.startAnimating()
    let height: NSLayoutConstraint = NSLayoutConstraint(item: waitActivityAlert.view, attribute: NSLayoutAttribute.height, relatedBy: NSLayoutRelation.equal, toItem: nil, attribute: NSLayoutAttribute.notAnAttribute, multiplier: 1, constant: 100)
    waitActivityAlert.view.addConstraints([height])
    present(waitActivityAlert, animated: true)

}

我正在后台加载一个表视图控制器。当我的UITableView加载单元格时,我使用以下函数关闭此UIAlertController

func letsstopspin(){
    spinner.stopAnimating()
    self.waitActivityAlert.dismiss(animated: true, completion: nil)
}

UIAlertController不会关闭,我在控制台中收到以下消息:

尝试从视图控制器中关闭,同时 演示或解雇正在进行中

所以我不知道如何解决这个问题。在tableView()方法之后可以调用任何方法吗?我尝试了一切,但UIAlertController不会驳回我尝试的任何东西。

这是我

之前准备的。 如果您只从一个地方进行调用,那么您不需要单独的函数,但如果您认为您可能需要再次调用它,您应该这样做 - 并且startActivityIndicator

func stopActivityIndicator()
{
    DispatchQueue.main.async(execute: {
        self.activityIndicator.stopAnimating()
    })
}

最新更新