在viewWillAppear

时间:2019-08-01 01:49:45

标签: ios swift

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

因此,我将请求代码放入viewWillAppear()中。 第一次,没关系,UIActivityIndicatorView开始动画并在请求之前显示,stopAnimation在请求后隐藏。

但是,第二次,即从另一个viewController返回(无论是从选项卡中的vc还是由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()
    }

0 个答案:

没有答案