自分のSettingsVCで、NSNotification.Name(rawValue: "LogOut")
の通知を送信します。この通知は、AppDelegateのdidFinishLaunchingWithOptions
機能によって観察されます。ユーザのログアウトによりアプリがクラッシュする
通知を受け取ったら、私はUser.logout
に電話してすべてのユーザーデータを消去し、DispatchQueue
ブロックでアプリがクラッシュします。
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
window = UIWindow(frame: UIScreen.main.bounds)
window?.backgroundColor = .white
NotificationCenter.default.addObserver(forName: NSNotification.Name(rawValue: "LogOut"), object: nil, queue: nil) { _ in
User.logout()
DispatchQueue.main.sync {
self.navigationController?.setViewControllers([WelcomeViewController()], animated: false)
}
}
if let _ = UserDefaults.standard.string(forKey: "loggedIn") {
self.navigationController = UINavigationController(rootViewController: HomeViewController())
} else {
self.navigationController = UINavigationController(rootViewController: WelcomeViewController())
}
window?.rootViewController = navigationController
window?.makeKeyAndVisible()
return true
}
追加情報なしでクラッシュします。どのようにこれをクラッシュさせないようにするか?ありがとう!
'User.logout()'の後、 'setViewControllers'の前に、いくつのViewC ontrollersはナビゲーションスタックにありますか? –
2つ。おそらく、どこかに強い参照があるかもしれません。それはあなたが得ているものですか? –