首页 > 解决方案 > UIActivityIndi​​catorView stopAnimating() 在 vi​​ewWillAppear 中第二次不起作用

问题描述

我想在发送请求之前显示 UIActivityIndi​​catorView 并在每次请求结束时隐藏。

所以我把请求代码放在viewWillAppear(). 第一次,就OK了,UIActivityIndicatorView请求前启动动画并显示,请求stopAnimation后隐藏。

但是,第二次,即从另一个返回viewController(无论是从 vc in tab 还是由 navigationController 推送)UIActivityIndicatorView显示但不隐藏,代码执行与第一次相同,包括断点。

StopAnimation()完全执行但 activityIndi​​catorView 不会停止或隐藏。

我尝试将请求代码放入viewDidAppear(). ActivityIndicatorView每当从另一个人回来时就会停下来隐藏起来viewController

UIActivityIndi​​catorView 工作特别吗?

    /* 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()
    }

标签: iosswift

解决方案


推荐阅读