Как отобразить имя пользователя, вошедшего в Firebase в другом UIViewController - PullRequest
0 голосов
/ 09 января 2019

Я хочу отобразить имя пользователя из моей базы данных firabase в другом UIViewController, но я не знаю как. Теперь название это «тест», но это только пример, поэтому, если другой пользователь заходит в мое приложение, он должен увидеть его имя на экране.

Здесь у вас есть настройки моей базы данных:

exsample-bde49

users:

profile: oAPjqYRrO1NADm1i1YH1qK7FOk53
photoURL: "https://firebasestorage.googleapis.com/v0/b/exs..."
    

username: "test"

Здесь у вас есть мой LoginViewController с функцией handleSignIn:

@objc func handleSignIn() {
    guard let email = emailField.text else { return }
    guard let pass = passwordField.text else { return }

    setContinueButton(enabled: false)
    continueButton.setTitle("", for: .normal)
    activityView.startAnimating()

    Auth.auth().signIn(withEmail: email, password: pass) { user, error in
        if error == nil && user != nil {
            self.dismiss(animated: false, completion: nil)
        } else {
            print("Error logging in: \(error!.localizedDescription)")

           self.restforms()
        }
    }
}

И здесь у вас есть мой код для моего HomeViewController, где мне будет нравиться отображаемое имя пользователя.

import Foundation
import UIKit
import Firebase

class HomeViewController:UIViewController {

    @IBAction func nextViewButton(_ sender: Any) {

        print("test press")

        self.performSegue(withIdentifier:"seccondview", sender: self)

    }

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    @IBAction func handleLogout(_ sender:Any) {
        try! Auth.auth().signOut()
        self.dismiss(animated: false, completion: nil)
    }


    @IBAction func logout(_ sender: Any) {
        try! Auth.auth().signOut()
        self.dismiss(animated: false, completion: nil)

    }

}

1 Ответ

0 голосов
/ 09 января 2019

Вы должны создать переменную в следующем контроллере представления, а затем установить ее перед существующим nextViewController, который вы можете запускать при выполнении любого перехода, как показано в следующем коде

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "seccondview" {
        if let nextViewController = segue.destination as? NextViewController  {
                nextViewController.userName = "userNameYouWantToPass" 
        }
    }
}
...