在UINavigationController堆栈的UIViewController中关闭UIAlertController

时间:2018-10-05 09:27:03

标签: ios swift uiviewcontroller

我有一个带有三个视图控制器的导航控制器。我想在第二个视图控制器中显示加载警报,直到从服务器加载资源为止。因此,我在其viewDidLoad()方法中添加了以下代码

alert = UIAlertController(title: nil, message: "Loading...", preferredStyle: .Alert)
        let loadingIndicator = UIActivityIndicatorView(frame: CGRect(x: 10, y: 5, width: 50, height: 50))
loadingIndicator.hidesWhenStopped = true
loadingIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.Gray
loadingIndicator.startAnimating()
alert.view.addSubview(loadingIndicator)
presentViewController(alert, animated: true, completion: nil)

我还有一个名为loadFromURL()的方法,该方法具有以下代码

let request = NSURLRequest(URL: NSURL(string: "server_url"))
let dataTask = self.urlSession.dataTaskWithRequest(request) { (data, response, error) -> Void in
    NSOperationQueue.mainQueue().addOperationWithBlock({ () -> Void in
        if error == nil && data != nil {
            //...implementation
        }
        self.dismissViewControllerAnimated(true, completion: nil)
    })
}
dataTask.resume()

当我从第一个视图控制器导航到第二个视图控制器时,一切都第一次正常运行。但是,当我再次从第一个导航到第二个视图控制器时,返回第一个视图控制器后,警报控制器并没有消失,并且永远存在。

第二次,我也收到类似的警告

  

在演示或解散过程中,尝试从视图控制器中解散!。

我不知道我要去哪里错了。

0 个答案:

没有答案