【问题标题】:Swift - Implement global activity indicatorSwift - 实施全球活动指标
【发布时间】:2015-07-02 11:27:02
【问题描述】:

我目前正在尝试在 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
}

【问题讨论】:

    标签: swift activity-indicator


    【解决方案1】:

    我会推荐这样的扩展。

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

    但是,我希望您查看UIApplication 中的networkActivityIndicatorVisible。考虑使用此选项。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-23
      相关资源
      最近更新 更多