How to set an UIActivityIndicatorView when loading a UITableViewCell

前端 未结 5 945
忘了有多久
忘了有多久 2020-12-28 13:01

I have two UITableViewControllers, A and B. When I tap one cell in table A, I will use UINavigationController to push table view controller B. But

5条回答
  •  清酒与你
    2020-12-28 13:28

    In viewDidLoad of tableview B class, add an activity indicator.

    // Create the Activity Indicator.
        let activityIndicator = UIActivityIndicatorView(activityIndicatorStyle: .gray)
        activityIndicator.hidesWhenStopped = true
        view.addSubview(activityIndicator)
    
        // Position it at the center of the ViewController.
        activityIndicator.translatesAutoresizingMaskIntoConstraints = false
        NSLayoutConstraint.activate([
            activityIndicator.centerXAnchor.constraint(equalTo: view.centerXAnchor),
            activityIndicator.centerYAnchor.constraint(equalTo: view.centerYAnchor)])
        activityIndicator.startAnimating()
    

    Now call your method that downloads data from the network.

    myDownloadMethod()
    

    Do it in a different thread if you don't want the UI to be non responsive during the process.

    read this thread for that. Can I use a background thread to parse data?

    When you are notified that the contents are downloaded, stop the indicator.

    activityIndicator.stopAnimating()
    

    Now you can call tableview.reloadData() for reloading the table to display the new contents.

提交回复
热议问题