私はFirebaseを使ってミニソーシャルメディアを作成しようとしています。現在のところ、ログインと登録を処理するloginRegisterViewControllerとメインコンテンツを提示するTabbarViewcontrolerの2つのコンポーネントがあります。 appDelegateのdidFinishLaunching方法においてプログラムでloginViewControllerを管理するにはどうすればよいですか?
、私はrootViewコントローラ
let rootviewController = TabbarController()
window?.rootViewController = rootviewController
とTabbarControllerのviewDidLoadメソッドで、iはLoginViewControllerが提示かなければならないかどうかを確認するために、次のコードを実装するようTabbarViewcontrolerを設定。ユーザーがいない場合
class TabbarController: UITabBarController {
var handle : FIRAuthStateDidChangeListenerHandle?
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .white
// check if the user is logged in or not.
handle = FIRAuth.auth()!.addStateDidChangeListener(){ auth, user in
if user == nil {
self.present(loginRegisterViewController(), animated: true, completion: nil)
}else{
self.setupTabbarController()
}
}
}
}
ユーザーがログインしている場合は、私たちのセットアップtabbarViewControllerは、我々はtabbarViewControllerの上にloginRegisterViewControllerを提示します。
ただし、新しいユーザーを登録してloginRegisterViewControllerを閉じるたびに、空のtabbarViewControllerが表示されます。
これは、tabbarViewControllerのviewDidLoadメソッドのif-else条件のために発生することがわかりました。
最初にログインしたユーザがいないので、私は新しいユーザーを登録してloginRegisterViewControllerを解任した後
self.setupTabbarController()
方法は、このように、そのため...と呼ばれていない、私は空のtabbarViewControllerを取得します。
しかし、これを解決するにはどうすればよいですか?または、ユーザーがログインしているかどうか、またはmainContentViewControllerまたはLoginRegisterViewControllerを表示しないかどうかを確認する良い方法がありますか?
ありがとうございます。
編集:setupTabbarViewControllerが設定する機能ですtabbarController
func setupTabbarController(){
let shopControler = ViewController()
let shopNavigationControler = UINavigationController(rootViewController: shopControler)
shopNavigationControler.tabBarItem.title = "Shop"
shopNavigationControler.tabBarItem.image = UIImage(named: "Shop_Tabbar_Image")
viewControllers = [newsfeedNavigationControler, shopNavigationControler]
}
setupTabBarController関数の外観はどうなっていますか? – JustinM
@ JustinM、tabbarControlelrを設定する典型的な方法ですが、主な問題は呼び出されないということです。私はすでに投稿に含まれています。 – progammingBeignner
元の質問を編集して、コードを正しくフォーマットしてください。その長さのコードは、コメントでは簡単には読めません。 – JustinM