我目前正在尝试在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
}
答案 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。状态栏中的旋转指示器显示网络活动。该应用可能会明确隐藏或显示此指标。