首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在tableView加载时显示活动指示器?

如何在tableView加载时显示活动指示器?
EN

Stack Overflow用户
提问于 2015-04-28 15:22:18
回答 6查看 56.2K关注 0票数 37

当我在选项卡之间切换时,它会加载几秒钟,我想知道我的数据是否正在加载。为此,我决定添加一个活动指示器。

我写了一个小函数:

代码语言:javascript
复制
func showActivityIndicator() {
    dispatch_async(dispatch_get_main_queue()) {
        self.spinner = UIActivityIndicatorView(activityIndicatorStyle: .WhiteLarge)
        self.spinner.frame = CGRect(x: 0.0, y: 0.0, width: 80.0, height: 80.0)
        self.spinner.center = CGPoint(x:self.loadingView.bounds.size.width / 2, y:self.loadingView.bounds.size.height / 2)

        self.loadingView.addSubview(self.spinner)
        self.view.addSubview(self.loadingView)
        self.spinner.startAnimating()
    }
}

这将显示我的指示器。当我从我的infoController to按钮点击时,试着使用它:

代码语言:javascript
复制
@IBAction func goToMainFromInfo(sender: AnyObject) {
        self.showActivityIndicator()
        self.performSegueWithIdentifier("fromMainToInfoWActivity", sender: nil)
        self.hideActivityIndicator()
    }
}

我在segue执行之前显示它,在执行后隐藏它。这对我没什么帮助。当我尝试使用sync时:

代码语言:javascript
复制
@IBAction func goToMainFromInfo(sender: AnyObject) {
    dispatch_async(dispatch_get_main_queue()) {
        self.showActivityIndicator()
        self.performSegueWithIdentifier("fromMainToInfoWActivity", sender: nil)
        self.hideActivityIndicator()
    }
}

但这也没什么用。当我按tab键时,它的不透明度变为0.5,我等待它加载。但是我没有看到我的活动指示器。

有什么问题吗?

EN

回答 6

Stack Overflow用户

发布于 2016-08-06 20:20:02

Swift 2+

代码语言:javascript
复制
    class ViewController: UITableViewController {
        weak var activityIndicatorView: UIActivityIndicatorView!

        override func viewDidLoad() {
            super.viewDidLoad()
            let activityIndicatorView = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.Gray)
            tableView.backgroundView = activityIndicatorView
            self.activityIndicatorView = activityIndicatorView
            activityIndicatorView.startAnimating()

        }
        ...
    }
票数 14
EN

Stack Overflow用户

发布于 2020-04-24 12:29:45

我使用两个扩展方法添加一个UIActivityIndicatorView作为表视图的backgroundView

代码语言:javascript
复制
extension UITableView {
    func showActivityIndicator() {
        DispatchQueue.main.async {
            let activityView = UIActivityIndicatorView(style: .medium)
            self.backgroundView = activityView
            activityView.startAnimating()
        }
    }

    func hideActivityIndicator() {
        DispatchQueue.main.async {
            self.backgroundView = nil
        }
    }
}

您可以像这样显示/隐藏它。

代码语言:javascript
复制
tableView.showActivityIndicator()
tableView.hideActivityIndicator()
票数 7
EN

Stack Overflow用户

发布于 2015-04-28 19:38:03

此代码可以帮助您:)

代码语言:javascript
复制
   let indicator:UIActivityIndicatorView = UIActivityIndicatorView  (activityIndicatorStyle: UIActivityIndicatorViewStyle.Gray) 
   indicator.color = UIColor .magentaColor()
   indicator.frame = CGRectMake(0.0, 0.0, 10.0, 10.0)
   indicator.center = self.view.center
   self.view.addSubview(indicator)
   indicator.bringSubviewToFront(self.view)
   indicator.startAnimating()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29912852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档