加载 TableView 时关闭 UIAlertController
Dismiss a UIAlertController while Loading a TableView
我编写了一个 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
没有关闭,我在控制台中收到此消息:
Attempt to dismiss from view controller while
a presentation or dismiss is in progress
所以我不知道如何解决这个问题。在 tableView()
方法之后有没有可以调用的方法?
我尝试了一切,但 UIAlertController
并没有拒绝我的任何尝试。
这是我之前准备的。如果您只从一个地方拨打电话,那么您不需要单独的功能,但如果您认为您可能需要再次调用它,您应该这样做 - 和类似的 startActivityIndicator
func stopActivityIndicator()
{
DispatchQueue.main.async(execute: {
self.activityIndicator.stopAnimating()
})
}
我编写了一个 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
没有关闭,我在控制台中收到此消息:
Attempt to dismiss from view controller while a presentation or dismiss is in progress
所以我不知道如何解决这个问题。在 tableView()
方法之后有没有可以调用的方法?
我尝试了一切,但 UIAlertController
并没有拒绝我的任何尝试。
这是我之前准备的。如果您只从一个地方拨打电话,那么您不需要单独的功能,但如果您认为您可能需要再次调用它,您应该这样做 - 和类似的 startActivityIndicator
func stopActivityIndicator()
{
DispatchQueue.main.async(execute: {
self.activityIndicator.stopAnimating()
})
}