如何显示UIAableViewController的UIActivityIndi​​catorView?

如何显示UIAableViewController的UIActivityIndi​​catorView?

问题描述:

我是iOS开发的初学者,我有一个关于如何显示UIActivityIndi​​catorView的问题。如何显示UIAableViewController的UIActivityIndi​​catorView?

这是我的结构:

我有一个的UITabBarController为根VC。我有一个UITableViewController 在TableView内部,我做了一个REST请求(此时是一个假申请)。

我想要什么?

当我启动应用程序时,TableView被加载并且请购已完成。 请求被创建时,我想显示UIActivityIndi​​catorView。

我的问题是显示此ActivityIndi​​catorView :(

我的代码

MainViewController(根VC)

import UIKit 

class MainViewController: UITabBarController { 

override func viewDidLoad() { 
    super.viewDidLoad() 

    setupTabBarItems() 
} 

private func setupTabBarItems() { 

    let items: [String] = ["Home", "Carrinho", "Categorias", "Conta"] 

    let homeVC = HomeTableViewController() 
    let carrinhoVC = UIViewController() 
    let categoriasVC = UIViewController() 
    let contaVC = UIViewController() 

    let tabBarList = [homeVC, carrinhoVC, categoriasVC, contaVC] 

    for i in 0..<4 { 
     tabBarList[i].tabBarItem = UITabBarItem(title: items[i], image: UIImage(named: items[i]), selectedImage: UIImage(named: items[i])) 
    } 

    viewControllers = tabBarList 
} 
} 

HomeTableViewController(表视图)

import UIKit 

class HomeTableViewController: UITableViewController { 

let progressView: UIActivityIndicatorView = { 
    let p = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.whiteLarge) 
    p.backgroundColor = .black 
    p.translatesAutoresizingMaskIntoConstraints = false 
    p.startAnimating() 
    return p 
}() 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // **the method is called here** 
    setupIndicatorView() 
    /* others methods */ 
} 

private func setupIndicatorView() { 
    guard let window = UIApplication.shared.keyWindow else {return} 

    window.addSubview(progressView) 
    window.bringSubview(toFront: progressView) 

    // function to add constraints (is an extension of UIView) 
    window.constraint(pattern: "H:|[v0]|", views: progressView) 
    window.constraint(pattern: "V:|[v0]|", views: progressView) 

} 
/* other methods */ 

有什么建议吗?

直接添加progressView到的tableView:

private func setupIndicatorView() { 
    self.view.addSubview(progressView) 
    progressView.center = self.view.center // or instead use autolayout if you prefer it 
}