Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.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
Ios 加载TableView时关闭UIAlertController_Ios_Iphone_Swift_Uitableview_Uialertcontroller - Fatal编程技术网

Ios 加载TableView时关闭UIAlertController

Ios 加载TableView时关闭UIAlertController,ios,iphone,swift,uitableview,uialertcontroller,Ios,Iphone,Swift,Uitableview,Uialertcontroller,我编程了一个UIAlertController作为加载屏幕 let waitActivityAlert = UIAlertController(title: nil, message: "Please wait...\n", preferredStyle: .alert) let spinner = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.whiteLarge) func lets

我编程了一个
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)


}
我正在后台加载一个TableViewController。当我的
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()
    })
}

这是我之前准备的。如果您只从一个地方进行调用,那么您不需要单独的函数,但是如果您认为可能需要再次调用它,您应该执行此操作-对于
startActivityIndicator

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

是否从后台线程调用letstopspin()?您应该对主线程进行所有UI调用是的,我在TableView填充单元格之前使用的函数末尾调用LetsTopSpin()。如果您是从后台线程进行调用,则在后台线程完成之前不会调用它。您需要将其包装在发送到主队列的调度中,您能告诉我一个示例吗?我的主队列(viewDidLoad())调用函数,该函数在letsspin()方法之后启动tableView,因此在tableView中填充数据后,我的函数就完成了。我是编程界的新手,所以我不知道如何将LetsTopSpin()包装在其中。如果我在最后包装它,它根本就不会开始。看看我发布的答案-如果你在任何时候调用self.stopActivityIndicator(),该指示器应该立即停止。你是从后台线程调用letstopspin()吗?您应该对主线程进行所有UI调用是的,我在TableView填充单元格之前使用的函数末尾调用LetsTopSpin()。如果您是从后台线程进行调用,则在后台线程完成之前不会调用它。您需要将其包装在发送到主队列的调度中,您能告诉我一个示例吗?我的主队列(viewDidLoad())调用函数,该函数在letsspin()方法之后启动tableView,因此在tableView中填充数据后,我的函数就完成了。我是编程界的新手,所以我不知道如何将LetsTopSpin()包装在其中。如果我在最后包装它,它根本就不会开始。看一下我发布的答案-如果你在任何时候调用self.stopActivityIndicator(),指示器应该会立即停止。我添加了
override func viewdidDisplay(uu-animated:Bool){super.viewdidDisplay(animated)self.letsstopspin()}
现在它被取消,但我仍然收到“演示或取消正在进行时尝试从视图控制器取消”警告。我忘记删除其他函数中的调用:D它现在可以正常工作,非常感谢!:-)很高兴为您提供帮助我添加了
覆盖func viewdideappease(uuanimated:Bool){super.viewdideappease(animated)self.letsstopspin()}
,现在它被解除,但我仍然收到“在演示或解除过程中尝试解除视图控制器”警告。我忘记删除另一个函数中的调用:D它现在可以正常工作,非常感谢!:-)很乐意帮忙