2

アプリケーションに UI を追加する UITabBarController のような追加の UI コントロールを使用せずに、2 つの UIViewController クラスをプログラムで切り替えたいと考えています。

私のメインは、addSubView を使用して最初のビュー コントローラーを読み込みます。

    vc1 = new viewc1();
    window.AddSubview(vc1.View);
    window.MakeKeyAndVisible ();    

PresentModalViewController を使用して、最初のViewControllerから2番目のViewControllerをロードできます

    vc2 = new viewc2();
    PresentModalViewController(vc2, true);

しかし、前後に切り替えて、メモリを節約するために古いviewControllerを解放する必要があります。これを行う最善の方法は何ですか? DismissModalViewControllerAnimated(false); 2番目のView Controllerではメモリが解放されず、モーダルな「ウィンドウ」が最適ではないため、必要ありません。カスタム UI を使用しているため、タブバー コントローラーは必要ありません。

4

2 に答える 2

3

シンプルなコードで実行できます。ただし、ボタン タップ イベントなどのユーザー インタラクションを処理する必要があるため、View Controller を解放することはできません。ビューをウィンドウに追加すると、ビュー インスタンスのみが保持されます。ビュー コントローラー インスタンスを解放すると、不正なアクセス エラーまたは認識されないセレクター エラーが発生する可能性があります。

だからあなたのメインコードを

if(vc1==nil)
  vc1 = new viewC1();
window.addSubView(vc1.view);
window.MakeKeyAndVisible ();

そして、あなたのスイッチコードは

if(vc2==nil)
   vc2 = new viewC2();
if(vc1.view.superview!=nil){
   vc1.view.removefromSuperView();
   window.addsubview(vc2.view);
} else {
   vc2.view.removeFromSuperView();
   window.addsubview(vc1.view);
}

今deallocメソッドに追加

vc1.release();
vc2.release();

それだけです...これが役立つことを願っています...私はちょうどあなたの構文に従いました

于 2011-05-11T11:24:32.937 に答える
0

静止画を使用できUINavigationControllerます。それが提供する追加の UI は必要ありません。を使用できます。それを隠すためHiddenの のプロパティ。UINavigationBarビューを切り替えるにはPushViewController(controller, animated)、新しいビューをプッシュするだけです。古いコントローラーを解放したい場合は、次を使用してUINavigationController.ViewControllersプロパティを設定するだけです。

navigationController.ViewControllers = new UIViewController[1]{ vc2 };

これにより、最初のコントローラーの参照が削除され、2 番目のコントローラーがルートになります。(これは逆にも機能します!)

于 2011-05-11T13:42:09.913 に答える