Показать панель управления с вкладками после входа в Swift - PullRequest
0 голосов
/ 21 февраля 2020

Я новичок в Свифте, поэтому мне нужно немного помочь. Попытка заставить контроллер представления с вкладками появляться после того, как пользователь входит в систему / регистрируется, но не слишком уверен, как это сделать. Любая помощь будет отличной.

Это мой код для входа в систему.

import UIKit
import FirebaseAuth

class LogInViewController: UIViewController {

    @IBOutlet weak var emailTextField: UITextField!

    @IBOutlet weak var passwordTextField: UITextField!

    @IBOutlet weak var errorLabel: UILabel!

    @IBOutlet weak var logInButton: UIButton!


    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
        setUpElements()
    }

    func setUpElements() {
        Utilities.styleTextField(emailTextField)
        Utilities.styleTextField(passwordTextField)
        Utilities.styleFilledButton(logInButton)
    }




    @IBAction func logInTapped(_ sender: Any) {

        let email = emailTextField.text!.trimmingCharacters(in: .whitespacesAndNewlines)
        let password = passwordTextField.text!.trimmingCharacters(in: .whitespacesAndNewlines)

        Auth.auth().signIn(withEmail: email, password: password){ (result, error) in
            if error != nil {

                self.errorLabel.text = error!.localizedDescription
                self.errorLabel.alpha = 1
            }
            else {

                let homeViewController = self.storyboard?.instantiateViewController(identifier: Constants.Storyboard.homeViewController) as?
                HomeViewController

                self.view.window?.rootViewController = homeViewController
                self.view.window?.makeKeyAndVisible()
            }
    }

Ответы [ 2 ]

0 голосов
/ 21 февраля 2020

Если вы используете раскадровку, вы можете попробовать с этим

//make Constant.swift file and add this code and access anywhere in code

    let UIViewControllerUsingName : (String,String) -> UIViewController? = {storyBoardName,viewControllerId in

        return UIStoryboard(name: storyBoardName, bundle: nil).instantiateViewController(withIdentifier: viewControllerId)

    }

Затем добавить эту строку в AppDelegate файл для доступа к существующим AppDelegate

static var shared : AppDelegate = UIApplication.shared.delegate as! AppDelegate

И

Auth.auth().signIn(withEmail: email, password: password){ (result, error) in

            if error != nil {

                self.errorLabel.text = error!.localizedDescription
                self.errorLabel.alpha = 1
            }
            else {

                 if let homeVC = UIViewControllerUsingName("tabHome","tabHomeVC"){

                        //homeVC is your UITabBarController

                        AppDelegate.shared.window?.rootViewController = homeVC
                    }
            }
0 голосов
/ 21 февраля 2020

Это зависит от того, как вы хотите показать свой UITabBarController, но вы не должны касаться своего ключевого окна, вашего rootViewController или чего-либо еще. Вы можете поместить sh свой контроллер в стек навигации, если вы находитесь в UINavigationController или представить его модально, или любой из нескольких вещей.

Если вы находитесь в раскадровке, наиболее распространенный способ справиться с этим - использовать сегы. Создайте переход к своему HomeViewController и дайте ему имя (скажем, это «Дом»):

@IBAction func logInTapped(_ sender: Any) {

    let email = emailTextField.text!.trimmingCharacters(in: .whitespacesAndNewlines)
    let password = passwordTextField.text!.trimmingCharacters(in: .whitespacesAndNewlines)

    Auth.auth().signIn(withEmail: email, password: password){ (result, error) in
        if error != nil {
            self.errorLabel.text = error!.localizedDescription
            self.errorLabel.alpha = 1
        } else {
            performSegue(withIdentifier "Home": String, sender: self)
        }
}

Вы определенно захотите посмотреть документацию для этого:

Контроллеры вида

Отображение и скрытие контроллеров вида

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