Как я могу показать UIActivityIndicator, в то время как приложение получает данные из базы данных Firebase Realtime - PullRequest
0 голосов
/ 20 мая 2018

Я не нахожу ничего для отображения UIActivityIndicator при получении данных из базы данных реального времени firebase.до сих пор я использовал этот код, но он не работал для меня.

//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)
    })

1 Ответ

0 голосов
/ 20 мая 2018

Вам нужно запустить анимацию UIActivityIndicatorView вне области обратного вызова обозревателя firebase и остановить его, как только наблюдатель вернет снимок.

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.
     })
}
...