繁体   English   中英

如何在UITableViewController中显示UIActivityIndi​​catorView?

[英]How to show an UIActivityIndicatorView whitin UITableViewController?

我是iOS开发的初学者,并且遇到有关如何显示UIActivityIndi​​catorView的问题。

这是我的结构:

我有一个UITabBarController作为根VC。 在第一本指南的TabBarController内部,我有一个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
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM