我想在发送请求之前显示UIActivityIndicatorView并在每次请求结束时隐藏。
因此,我将请求代码放入viewWillAppear()
中。
第一次,没关系,UIActivityIndicatorView
开始动画并在请求之前显示,stopAnimation
在请求后隐藏。
但是,第二次,即从另一个viewController
返回(无论是从选项卡中的vc还是由NavigationController推送),UIActivityIndicatorView
会显示但不会隐藏,代码将与第一次执行相同,包括断点。
StopAnimation()
已完全执行,但activityIndicatorView不会停止或隐藏。
我尝试将请求代码放入viewDidAppear()
中。
每当从另一个ActivityIndicatorView
返回时,viewController
就会停止并隐藏。
UIActivityIndicatorView是否工作特殊?
/* Has problem
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
request()
}
*/
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
request()
}
private func request() {
let session = URLSession(configuration: URLSessionConfiguration.default)
activityIndicatorView.startAnimating()
let task = session.dataTask(with: request) {
data, response, error in
DispatchQueue.main.async {
activityIndicatorView.stopAnimating()
}
}
// 9.20 edited
task.resume()
}