我正在展示一个没有任何按钮的UIAlertViewController,因为它应该只是通知用户正在上传.该应用程序应该将一些文件上传到Amazon S3(有些事情发生在并行线程上),我担心当我想关闭它时,对alert view控制器的引用会丢失.
你知道会出什么问题吗?
我有一个类级属性:var uploadInProgressAlert = UIAlertController()
我使用此代码在没有按钮的情况下显示alert (它可以工作):
self.uploadInProgressAlert = UIAlertController(title: "Uploading", message: "Please wait.", preferredStyle: .Alert)
self.presentViewController(self.uploadInProgressAlert, animated: true, completion: nil)
此代码用于解除alert (alert 不会被解除):
在这个帖子里:有iOS dismiss UIAlertController in response to event个人谈到了"持有参考资料".我不知道"保持参考"是什么意思,我认为这可能是问题的根源.
EDIT:我把上面的代码放在一个简单的测试应用程序中,它就在那里工作了.但是,当一些并行线程的情况变得复杂时,我无法找到一种方法来解除alert .
var delay4s = NSTimer()
var delay8s = NSTimer()
var alert = UIAlertController()
func showAlert() {
if NSClassFromString("UIAlertController") != nil {
alert = UIAlertController(title: "Uploading", message: "Please wait! \n\n", preferredStyle: UIAlertControllerStyle.Alert)
self.presentViewController(alert, animated: true, completion: nil)
}
}
func dismissAlert(){
self.alert.dismissViewControllerAnimated(true, completion: nil)
}
override func viewDidLoad() {
super.viewDidLoad()
delay4s = NSTimer.scheduledTimerWithTimeInterval(4.0, target: self, selector: "showAlert", userInfo: nil, repeats: false)
delay8s = NSTimer.scheduledTimerWithTimeInterval(8.0, target: self, selector: "dismissAlert", userInfo: nil, repeats: false)
}