Профиль пользователя Swift 4 UILabels delay loadiv - PullRequest
0 голосов
/ 06 сентября 2018

Свишишься меньше недели, так что будь осторожен.

Ниже вы можете видеть, что если пользователь вошел в систему по электронной почте или через FB, он получит защищенную страницу Main.На этой странице есть профиль пользователя.На данный момент у него есть 2 метки и 2 кнопки для выхода из системы и общего доступа к FB.

Всякий раз, когда эта страница загружается, мои метки не загружаются в виде, вместо этого есть задержка.Посредством дедукции / тестирования это выглядит как начальный процесс.Что нужно сделать, чтобы устранить задержку отображения UILabels в Main?

appcontainerviewcontroller

import UIKit

class AppContainerViewController: UIViewController {

    override func viewDidAppear(_ animated: Bool) {

        super.viewDidAppear(animated)

        AppManager.shared.appContainer = self

        AppManager.shared.showApp()

    }

}

appmanager

import UIKit

import Firebase

import FirebaseDatabase

import FBSDKLoginKit



class AppManager {



    static let shared = AppManager()



    let storyboard = UIStoryboard(name: "Main", bundle: nil)

    var appContainer: AppContainerViewController!



    private init() {}



    func showApp() {

        var viewController: UIViewController

        if (Auth.auth().currentUser == nil) && (FBSDKAccessToken.current() == nil) {

            viewController = storyboard.instantiateViewController(withIdentifier: "LoginViewController")

        } else {

            viewController = storyboard.instantiateViewController(withIdentifier: "MainViewController")

        }

        appContainer.present(viewController, animated: true, completion: nil)

    }



    func logout() {

        let loginManager = FBSDKLoginManager()

        loginManager.logOut()

        try! Auth.auth().signOut()

        appContainer.presentedViewController?.dismiss(animated: true, completion: nil)

    }

}

основной видконтроллер

import UIKit

import Firebase

import FirebaseDatabase

import FBSDKShareKit



class MainViewController: UIViewController {



    @IBOutlet weak var name: UILabel!

    @IBOutlet weak var email: UILabel!





    @IBAction func logoutPressed(_ sender: Any) {

        AppManager.shared.logout()

    }

    @IBAction func fbSharePressed(_ sender: Any) {

        let content = FBSDKShareLinkContent()

        content.contentURL =  URL(string: "https://advice.com")

        content.quote = "Hey, I'm one step closer to getting into the college of my dreams with this app.  Download it and let's go together!"

        let dialog : FBSDKShareDialog = FBSDKShareDialog()

        dialog.fromViewController = self

        dialog.shareContent = content

        dialog.mode = FBSDKShareDialogMode.automatic

        dialog.show()

    }



    func userProfile() {

        guard let uid = Auth.auth().currentUser?.uid else { return }

        let ref = Database.database().reference()

        ref.child("users").child(uid).observeSingleEvent(of: .value, with: { (snapshot) in

            guard let dict = snapshot.value as? [String: Any] else { return }

            let user = CurrentUserProfile(uid: uid, dictionary: dict)

            self.name.text = user.name

            self.email.text = user.email

        }, withCancel: nil)       

    }



    override func viewDidLoad() {

        super.viewDidLoad()

        userProfile()

    }



}

1 Ответ

0 голосов
/ 06 сентября 2018
    override func viewDidAppear(_ animated: Bool) {

    super.viewDidAppear(animated)

    AppManager.shared.appContainer = self

    AppManager.shared.showApp()
}

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

    override func viewWillAppear(_ animated: Bool) {
    <#code#>
}

или

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

Редактировать: Здесь вы можете увидеть жизненный цикл ViewController https://developer.apple.com/documentation/uikit/uiviewcontroller

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...