加载View Loader后,Firebase中的数据会显示

时间:2018-05-19 04:26:07

标签: ios swift firebase

以下视图控制器在Firebase数据有机会加载之前加载。如何在视图加载器出现的同时或之前加载Firebase数据?

当我使用断点时,我可以看到新视图出现,然后数据从Firebase中提取。我需要在视图出现之前从Firebase加载数据。

这是视图控制器的代码

override func viewDidLoad() {
    super.viewDidLoad()


    navigationItem.leftBarButtonItem = UIBarButtonItem(title: "Logout",
                                                       style: .plain, target: self, action: #selector(handleLogout))

    let image = UIImage(named: "new_message_icon")
    navigationItem.rightBarButtonItem = UIBarButtonItem(image: image, style: .plain, target: self, action: #selector(handleNewMessage))

    checkIfUserIsLoggedIn()
}

@objc func handleNewMessage(){

    let newMessageController = NewMessageController()

    let navController = UINavigationController(rootViewController: newMessageController)

    present(navController, animated: true, completion: nil)

}

func checkIfUserIsLoggedIn() {
    if Auth.auth().currentUser?.uid == nil {
        perform(#selector(handleLogout), with: nil,
                        afterDelay: 0)
    }else{
        let uid = Auth.auth().currentUser?.uid
        Database.database().reference().child("users").child(uid!).observeSingleEvent(of: .value, with: {(snapshot) in

            if let dictionary = snapshot.value as? [String: AnyObject] {
                self.navigationItem.title = dictionary["name"] as? String
                self.navigationController?.navigationBar.prefersLargeTitles = true

            }

            },withCancel: nil)

    }

}
override func didMove(toParentViewController parent: UIViewController?) {
    checkIfUserIsLoggedIn()
}

}

0 个答案:

没有答案