iPhone プロジェクトのストーリーボード内に次のワークフローを定義しています。
- ログイン ビュー コントローラーは、ストーリーボードのルート ビュー コントローラーとして設定されます。
- ログインには、ログインとアカウントの設定のための個別のワークフローがあります。
- どちらのワークフローも、メインのアプリ コンテンツを含むタブ バーをモーダルに表示することになります
- その後のアプリの起動では、インスタンス化する正しいコントローラーをプログラムで決定します
appDidFinishLaunching:
- 後続のアプリでは、メイン コンテンツを含むタブ バーを使用し、ルート ビュー コントローラー (プログラムで設定) を使用します。
ここで、「ログアウト」プロセスを実装したいと思います。ボタンはすべてのユーザーデータを消去し、ユーザーを元の「ログイン/アカウントの設定」画面に戻します。
アプリケーションの状態が複数あるため、ホーム画面に戻るには複数のパスが必要になるという問題が発生しています。例えば:
UIViewController* parent = self.presentingViewController;
UIViewController* grandparent = self.presentingViewController;
[self.presentingViewController dismissViewControllerAnimated:YES completion:^{
DLog(@"first dismiss");
DLog(@"%@",parent);
DLog(@"%@",grandparent);
[parent dismissViewControllerAnimated:YES completion:^{
DLog(@"second dismiss");
[grandparent.navigationController popToRootViewControllerAnimated:YES];
}];
}];
上記で定義したログイン/ログアウト ロジックを実装するにはどうすればよいですか?
現在画面に表示されているビュー階層を完全に折りたたんで別のものに置き換える正しい方法はありますか?
私はこれを考えています:
[self.window setRootViewController:tabBarViewController];
しかし、これが、デタッチしている古い rootViewController スタックで使用されているすべてのリソースを適切にアンロードするかどうかはわかりません。