2012-03-11 9 views
0

私がやっていることは、最初のページとしてログイン画面を作成することです。ログインしてサーバーと照合すると、ログインフィールドがクリアされ、ホーム画面が表示されます。その画面にはテキスト・ログアウトを与えた戻るボタンがあります。クリックするとログイン画面に戻ります。また、ログインボタンはセグの前にサーバーに対してあなたを確認するので、基本的にはログアウトしているように見えます。セグメンテーション、メモリ管理、ベストプラクティスを理解しようとしています

ただし、各ページにログアウトボタンがあります。私の考えは、他の画面のナビゲーションバーにボタンを追加することでした。テストとして、いくつかのレベルでログアウトボタンを画面に追加し、ログイン画面にセグを戻しました。私は同じページに戻ったかどうかを見るためにページ上のラベルを更新しました。それがログイン画面に戻ってきたとき、ラベルは空白だったので、私はログイン画面に戻らなかったと信じていましたが、新しいログイン画面が作成されました。ログアウトして基本的に最初に戻すにはどうしたらいいですか?

私はこれについて正しい方向に進むのでしょうか、これに関してはベストプラクティスですか?

答えて

1

segue経由で新しいView Controllerに移行するたびに、宛先View Controllerの新しいインスタンスが作成されます。したがって、セグを使用してログイン画面に戻ると、ナビゲーションスタックにさらに多くのビューコントローラが追加されます。

UINavigationControllerを使用しているようです。もしそうなら、方法popToRootViewControllerAnimated:を使用して、ナビゲーションスタックからすべてのView Controllerを削除し、ルート(ログインビューコントローラ)に戻ることができます。他のView Controllerは、それらがnavスタックから削除されたときにdeallocされ、あなたが記述した最終的なメモリの問題は発生しません。

// do this when the user clicks your Logout button 
[[self navigationController] popToRootViewControllerAnimated:NO];