如何显示标签栏控制器?

时间:2018-09-07 06:00:08

标签: swift viewcontroller tabbarcontroller

我已经尽一切努力将Tabbar控制器安装到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 :(得分:0)

鸡蛋在我的脸上。我的情节提要ID是错误的,然后通过情节提要将MainViewController嵌入到TabBarController中,然后将MainVC的情节提要ID应用于TabBarController可以解决问题。