Swift - 实施全球活动指标

时间:2015-07-02 11:27:03

标签: swift activity-indicator

我目前正在尝试在swift中创建一个全局活动指示器,只要对api进行提取就会调用它。我们的想法是,活动指示器将显示在导航栏(导航视图控制器的子项)的左上角,并且可在每个应用程序页面上使用。

由于新帐户/低代表

,无法显示示例图片

我的活动指示器显示正确,我只是不确定如何从应用程序的任何页面提供它 - 我已经考虑了扩展,但我不确定最好的方法是什么。任何帮助将不胜感激。

活动指标代码:

let activityIndicator: UIActivityIndicatorView = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.White)
var activityItem = UIBarButtonItem()

func navBarActivity() {
    // Call navBarActivity() to start activity indicator
    // Use navigationItem.leftBarButtonItem = nil to stop activity indicator
    activityIndicator.startAnimating()
    activityIndicator.hidden = false

    self.activityItem = UIBarButtonItem(customView: activityIndicator)
    self.navigationItem.leftBarButtonItem = activityItem
}

1 个答案:

答案 0 :(得分:7)

我会推荐像这样的扩展程序。

extension UIViewController {
    func displayNavBarActivity() {
        let indicator = UIActivityIndicatorView(activityIndicatorStyle: .White)
        indicator.startAnimating()
        let item = UIBarButtonItem(customView: indicator)

        self.navigationItem.leftBarButtonItem = item
    }

    func dismissNavBarActivity() {
        self.navigationItem.leftBarButtonItem = nil
    }
}

在api通话前拨打self.displayNavBarActivity(),并在api通话结束后拨打self.dismissNavBarActivity()

但是,我希望您查看networkActivityIndicatorVisible的{​​{1}}。考虑使用此选项。

  

如果应用应显示网络活动,请指定YES;如果不应,则指定NO。默认值为NO。状态栏中的旋转指示器显示网络活动。该应用可能会明确隐藏或显示此指标。

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIApplication_Class/#//apple_ref/occ/instp/UIApplication/networkActivityIndicatorVisible