ios - 当应用程序从 Firebase 实时数据库接收数据时,如何显示 UIActivityIndicator
问题描述
在从 firebase 实时数据库接收数据时,我没有找到任何显示 UIActivityIndicator 的东西。到目前为止,我已经使用了这段代码,但它对我不起作用。
//Check if the internet is connected or not
let connectedRef = Database.database().reference(withPath: ".info/connected")
connectedRef.observe(.value, with: { snapshot in
let myActivityIndicator = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.whiteLarge)
myActivityIndicator.center = self.view.center
if snapshot.value as? Bool ?? false {
print("Connected")
myActivityIndicator.stopAnimating()
myActivityIndicator.isHidden = false
}
else {
myActivityIndicator.startAnimating()
print("Not connected")
}
testView.addSubview(myActivityIndicator)
})
解决方案
您需要在 firebase 观察者回调范围之外开始为 UIActivityIndicatorView 设置动画,并在观察者返回快照后停止它。
var activityIndicator: UIActivityIndicatorView!
override func viewDidLoad() {
var activityIndicator = UIActivityIndicatorView(activityIndicatorStyle:
UIActivityIndicatorViewStyle.Gray)
activityIndicator.hidesWhenStopped = true;
activityIndicator.isHidden = true
activityIndicator.center = view.center;
addSubview(myActivityIndicator)
super.viewDidLoad()
}
func firebaseObserver() {
// Show indicator
activityIndicator.isHidden = false
activityIndicator.startAnimating()
// Firebase network observer
let connectedRef = Database.database().reference(withPath: ".info/connected")
connectedRef.observe(.value, with: { snapshot in
// Stop and hide indicator
self.activityIndicator.stopAnimating()
self.activityIndicator.isHidden = true
// Proceed with other operations.
})
}
推荐阅读
- python - 尝试在 python 命令中查看已安装模块的列表会弹出一个空白的 kivy 应用程序窗口
- asp.net - 我想在我的 SQL 连接字符串中加入 Enlist=False 吗?
- python - 如何检索 Apache Kudu 表列的 MIN 值?
- python - 错误:安装 psutil 时命令“gcc”以退出状态失败
- javascript - redux 中的本质扩展
- c# - 将新值从 form1 传递到 form2,该值位于数据库的同一记录中
- java - Java MessageFormat 无法格式化
- d3.js - 根据容器宽度动态改变刻度数
- java - 使用 Jackson 读取 csv 时的 Java 过滤器值
- sublimetext3 - 为什么 sublime text 3.x 中的自定义构建 python 2.7.x 没有相应运行