2017-08-12 9 views
0

保護されたビューと呼ばれるスーパークラスがあります。ユーザーがログインしているかどうかに基づいてコンテンツを分離します。私はユーザー認証のためにFireBaseを使用しています。ログイン方法に基づいてユーザーが認証されていることを確認できますが、user.removeFromSuperViewを実行すると表示が消えません。関数全体が存在するスーパークラスの私のviewdidloadcheckAuthentication()と呼んでいます。認証後にすべてのビューからビューが削除されない

let bannerView = ForceSignInBanner.instanceFromNib() as! ForceSignInBanner 
bannerView.delegate = self 

if (!AuthenticationService.sharedInstance.isAuthenticated()) { 
    print("Sign them up") 
    self.view.addSubview(bannerView) 

} else if(AuthenticationService.sharedInstance.isAuthenticated()){ 
    bannerView.removeFromSuperview() 
} 

答えて

1

あなたのコードは、ビューコントローラの寿命の後ではなく、viewDidLoadが呼び出される瞬間にのみ動作するようにする必要があります。これを正しく処理するには、addStateDidChangeListenerを使用する必要があります。次のように:

このようにして、ユーザーの認証状態が変更されると、いつでもこのクロージャが呼び出されます。

+0

何処で手に入れましたか?あなたは単にそれをvarまたはletとして宣言していますか?また、助けてくれてありがとう。 –

+0

'handle'は、(' bannerView'と一緒に)ビューコントローラで宣言されたvarです。もう聞きたくないときにリスナーを「切る」ために使用されます。詳しくはhttps://firebase.google.com/docs/auth/ios/start –

+0

これは機能しませんが、ビューは消えません。 –

関連する問題