0

Je suis débutant sur le développement iOS et j'ai un problème sur la façon de montrer un UIActivityIndicatorView.Comment afficher un UIActivityIndicatorView dans UITableViewController?

Ceci est ma structure:

J'ai un UITabBarController comme VC racine. À l'intérieur de ce TabBarController dans le premier guide j'ai un UITableViewController Inside TableView Je fais une réquisition REST (en ce moment, une fausse réquisition).

Qu'est-ce que je veux? Lorsque je lance l'application, TableView est chargé et la réquisition est effectuée. Pendant que la réquisition est faite, je veux montrer le UIActivityIndicatorView.

Mon problème est le montrer ActivityIndicatorView :(

Mon code

MainViewController (VC racine)

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 (table view)

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 */ 

Des suggestions?

Répondre

0

Ajouter le progressView directement au tableView:

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