Задержка загрузки MainVC при использовании экземпляра - PullRequest
0 голосов
/ 07 сентября 2018

Я перепробовал все, чтобы устранить задержку загрузки меток или любых других объектов с динамическими переменными с помощью MainViewController, и, похоже, ничего не работает.

Просто краткое изложение того, как работает приложение: запись раскадровки - AppContainerViewController, и если пользователь вошел в систему, то MainViewController появляется, как и должно быть, однако MainVC будет иметь небольшую задержку при загрузке переменных в объекты, такие как Labels, ImageViews и т. Д.

Что я делаю не так ?! К вашему сведению, viewWillAppear и viewDidLoad в AppContainerVC «ломают» мое приложение и никогда не показывают MainVC.

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()

    }



}
...