1

UINavigationControllern個の画面から最初の画面にジャンプしたい場合に最適なオプションであると読みました。そのためには、次のコードが必要です。

NSMutableArray *array=[[NSMutableArray alloc]initWithArray:self.navigationController.viewController];
[array removeObjectAtIndex:1];
[array removeObjectAtIndex:1];
[array removeObjectAtIndex:1];
self.navigationController.ViewController=array;
[self.navigationController popViewController:YES];

このコードを使用すると、4 番目の画面から最初の画面に直接移動できます。ナビゲーション コントローラーを使用しない場合、4 番目の画面で firstSCreen のオブジェクトを作成することで、数行で同じことを実現できます。では、なぜナビゲーション コントローラーを使用する必要があるのでしょうか。答えがメモリの最適化である場合、firstViewController のオブジェクトを自動解放し、現在は自動参照を使用しています。

4

3 に答える 3

3

まず第一に、これはポップへの間違ったアプローチです。本当の1つは

[self.navigationController popToRootViewController:YES];

2つ目は、4画面の場合、特定のビューコントローラにポップしてもすべての画面がポップされるわけではないということです。ここにメモリの問題があります。

もう1つの問題は、親画面のデータを失いたくない場合があることです。特定のビューコントローラにポップの方法を使用すると、データを持つオブジェクトが解放されるときにデータが失われます。あなたは新しいものを作りました。

ポイントは、これはあなたのシナリオに何が適しているかはあなたの条件に依存するということです。しかし、通常の通常のアプローチは、問題を引き起こす可能性があるため、特定のポップアウト技術を使用しないことです。

于 2012-05-21T10:27:30.013 に答える
0

使用できます

[self.navigationController popToViewController:(UIViewController *) animated:(BOOL)];

直接移動したいViewControllerのオブジェクトを渡す必要があります...そしてViewController間で自動的にポップアウトします

これがお役に立てば幸いです...

于 2012-05-21T11:16:26.037 に答える
0

「サード」に同意

もう1つのことは、サーバーからのデータを含むさまざまな画面がある場合です。最初にデータをロードしながら、2番目に画面をレンダリング(ユーザーインタラクション)するのは非常に困難です。

他のすべての兄弟ビューと同じです。

于 2012-05-21T11:48:50.313 に答える