2016-07-24 3 views
0

私は水平方向にスクロールするセルのコレクションビューを持っています。ログアウトするたびに、メインの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) 

} 
+1

ベスト方法時間。ログアウトすると、新しいログインフローがインスタンス化されて埋め込まれると、メモリから既存のメインアプリが解放されます – markedwardmurray

+0

こんにちは、ありがとうございます!サインアウトしたときにログインビューコントローラをモーダルに表示すると、Instagramはコンテナビューを使用していると思いますか? –

+1

コンテナビューは、ナビゲーションコントローラの動作と同様に、モーダルプレゼンテーションの代わりに子を埋め込みます。私はInstagramとほとんどのプロフェッショナル・アプリケーションがこのアーキテクチャに従っていると思われます。 – markedwardmurray

答えて

0

)私は、データの階層構造をリセットする。コントローラーを閲覧にdealloc

でのNSLogを追加し、多分あなたはあなたのコード(MainViewController)におけるいくつかのメモリリークを持っています。 IBOutletカスタムデリゲートため

0

使用弱参照ログインのみログインフローまたはメインアプリケーションのいずれかが、任意の所与のメモリに保持されるように、コンテナ・ビュー・コントローラに埋め込むれるフローを処理するため

関連する問題