ユーザがログインすると終了するビューコントローラがあります。終了機能終了ブロックでは、次のView Controllerをリロードする関数を起動しました。何も起こらない、空のビューコントローラ。しかし、すでにログインしているときにアプリケーションを終了してから再度開くと、すべてがロードされるようにロードされます。だからここ解除完了ブロックで機能が起動されない
は私のログイン機能である:
func loginFunc() {
if emailField.text != "" && passwordField.text != "" {
Auth.auth().signIn(withEmail: emailField.text!, password: passwordField.text!, completion: { (user, error) in
if user != nil {
// Sign In Successful
print("Sign In Sucessful")
self.dismiss(animated: true, completion: {
self.mainVC.starterMethod()
})
} else {
if let myError = error?.localizedDescription {
print(myError)
} else {
print("Error")
}
}
})
}
}
そして、ここで私のstarterMethod()
:
func starterMethod() {
ref = Database.database().reference()
let userId = Auth.auth().currentUser?.uid
if userId != nil {
print("You are logged in...")
} else {
present(LoginController(), animated: true, completion: nil)
}
setupPicks()
setupViewsMed()
fetchGames()
setNavigationBar()
setupCircles()
}
starterMethod()
がviewDidLoad
に呼ばれて、私は本当に可能な場合viewDidAppear()
を避けたいです
あなたの 'completionBlock'はエスケープしていますか?そうであればメモリリークがあります(それは悪いですが、自己がメモリに保持され、 'mainVC'へのアクセス権を持っているのでうまくいくはずです。@escapingでなければ、間違いなくUIがフリーズしてしまいます任意のメモリリークが発生しますが、完了ハンドラを終了した後に自己は存在しません。したがって、mainVCは存在しません。 – farzadshbfn
通知を使用することもできます。通知を送信し、MainVCにオブザーバを追加する – farzadshbfn
@farzadshbfn通知とオブザーバをどのように実装するのですか?もう少しお手伝いしてください:) –