2

わかりました-私の脳は現在揚げられているので、助けていただければ幸いです。

UIViewControllerアプリにのサブクラスが複数あります。それらを呼び出しましょうVC_A, VC_B, VC_C, VC_D

ユーザーは、各ビューのボタンに触れることで対話します。

したがって、私のAppDelegateはVC_Aを追加します。

//Add the view controller's view to the window and display.  
[self.window addSubview:viewController.view];  
[self.window makeKeyAndVisible];  

次に、VC_Aは次を使用してVC_BをロードしますpresentModalViewController

    VC_B *tempView = [[VC_B alloc] initWithNibName:@"temploadingscreen" bundle:nil];
    [self presentModalViewController:tempView animated:NO];
    [tempView release];  

そして、私が次の階層を取得するまで

VC_A 
- VC_B  
    - VC_C  
       - VC_D  

しかし、VC_Dを呼び出しpresentModalViewControllerてVC_Cに移動するときは、元のインスタンスではなく、VC_Cの新しいインスタンスにします。

だから私の質問は、これをどのように行うかです-[self dismissModalViewControllerAnimated:NO];ビューの古いインスタンスを削除するため に使用する必要がありますか?

私はこれを検索したので、どんな助けでもありがたいですが、すべてのチュートリアルやものはナビゲーションを制御するためにナビゲーションバーを使用しています-そして私はアプリの種類のためにそれを使用することはできません。UIViewControllersの新しいインスタンス間を適切に移動するための実用的なコード例は素晴らしいでしょう。

4

2 に答える 2

3

で新しいインスタンスを作成するだけです

ViewController_C *newVC_C = [[ViewController_C alloc] init]
[self presentModalViewController:newVC_C animated:NO];
[newVC_C release];
于 2011-06-20T22:43:09.850 に答える
0

私はこれを別の方法で行うことにしました。これは、必要なものに完全に対応するものです。

私がしたことは、xib に何もないベース ViewController を作成し、viewDidAppear メソッドで、グローバル NSNumber の値に基づいて (presentModalViewController を使用して) 他のビューコントローラーを呼び出したことです。

したがって、別のviewControllerを呼び出すのではなく、他のviewcontrollerに移動すると、ロードするビューを示すグローバル変数を設定し、現在のビューを閉じます(dismissModalViewControllerを使用)。

このようにして、viewControllers の各インスタンスが閉じられ、メモリが解放されます。

サンプル プロジェクトを作成し、github https://github.com/sregorcinimod/Openに配置しました。

ダウンロードを見るだけで、そこに表示されます

于 2011-06-21T08:30:29.887 に答える