私は水平方向にスクロールするセルのコレクションビューを持っています。ログアウトするたびに、メインのView Controllerがログイン画面に表示されなくなります。しかし、私が再びログインすると、私のメインビューコントローラは決してメモリから削除されていないようです。コレクションビューのセルは、ログアウトする前と同じ位置にあるため、これを言う。ログアウト後にメモリからView Controllerを削除しますか?
ViewWillAppearからデータを再読み込みしてみましたが、ビューコントローラを自分のルートウィンドウとして表示しようとしました。助言がありますか?
(設定ビューコントローラからInstagramからログアウトすると、これをはっきりと示すために、ログインビューはモーダルで表示されます)ログインし直すと、ホームフィードが表示されます。設定は
class MainController: UICollectionViewController, UICollectionViewDelegateFlowLayout {
let feedId = "feedId"
var allUserCategory: AllUserCategory?
override func viewDidLoad() {
super.viewDidLoad()
collectionView?.pagingEnabled = true
collectionView?.backgroundColor = UIColor(r: 250, g: 250, b: 250)
navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Log Out", style: .Plain, target: self, action: #selector(handleLogout))
navigationItem.rightBarButtonItem?.tintColor = UIColor.blueColor()
navigationController?.navigationBar.translucent = false
checkIfUserLoggedIn()
collectionView?.registerClass(AllUserCategory.self, forCellWithReuseIdentifier: feedId)
}
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
self.collectionView?.reloadData()
}
func handleLogout() {
print("Logged out")
do {
try FIRAuth.auth()?.signOut()
} catch let logoutError {
print(logoutError)
}
let loginController = LoginController()
allUserCategory?.users.removeAll()
let loginNav = UINavigationController(rootViewController: loginController)
presentViewController(loginNav, animated: true, completion: nil)
}
ベスト方法時間。ログアウトすると、新しいログインフローがインスタンス化されて埋め込まれると、メモリから既存のメインアプリが解放されます – markedwardmurray
こんにちは、ありがとうございます!サインアウトしたときにログインビューコントローラをモーダルに表示すると、Instagramはコンテナビューを使用していると思いますか? –
コンテナビューは、ナビゲーションコントローラの動作と同様に、モーダルプレゼンテーションの代わりに子を埋め込みます。私はInstagramとほとんどのプロフェッショナル・アプリケーションがこのアーキテクチャに従っていると思われます。 – markedwardmurray