Как показать Tab Bar Controller? - PullRequest
       47

Как показать Tab Bar Controller?

0 голосов
/ 07 сентября 2018

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

Просто краткое изложение того, как работает приложение: Запись раскадровки - AppContainerViewController, и если пользователь вошел в систему, то MainViewController отображается так, как должно, однако я не могу заставить MainVC стать контроллером TabBar для отображения панели вкладок для навигации пользователя по различным страницам.

Что я делаю не так?!

appcontainerviewcontroller

class AppContainerViewController: UIViewController {

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)

        AppManager.shared.appContainer = self
        AppManager.shared.showApp()
    }
}

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 голосов
/ 08 сентября 2018

Яйцо на моем лице. Мои идентификаторы раскадровки были неправильными, и встраивание MainViewController в TabBarController через раскадровку, а затем применение идентификатора раскадровки MainVC к TabBarController сделали свое дело.

...