0

私が作っているアプリは複数のビューを利用しています。免責事項ビュー、回答を表示するビューなど。これまで、あるビューから別のビューに切り替えるために使用していたコードです。

-(IBAction)swichtogain:(id)sender{
    gainview *second = [[gainview alloc]initWithNibName:nil bundle:nil];
    [self presentModalViewController:second animated:YES];
    [second release];
}

チュートリアルでこの方法を見つけましたが、これが最善の方法でしょうか? たとえば、同じコードを使用して、あるビューから別のビューに n 前後に切り替えます。

  -(IBAction)swichtoview1:(id)sender{
        view1 *view = [[gainview alloc]initWithNibName:nil bundle:nil];
        [self presentModalViewController:view animated:YES];
        [view release];
    }

そしてview1でユーザーが戻るボタンを押すと、次のコードが実行されます

  -(IBAction)swichtomainview:(id)sender{

       mainview *view = [[gainview alloc]initWithNibName:nil bundle:nil];
        [self presentModalViewController:view animated:YES];
        [view release];
    }

appdelegate ファイルは何も編集していません。これはビュー ベースのアプリです。この方法により、より多くのメモリが使用されますか? インスツルメントを使用したアクティビティモニターのテスト中に、メインメニューから別のビューに移動してメインメニューに戻るたびに、メモリ使用量が高くなることに気付きました!. これよりも良い方法はありますか?また、ビューの 1 つは電卓であるため、ユーザーが計算ボタンを押すと、テキスト フィールドを回答に変更しながら次のビューに切り替わります。以下はそのコードです。

-(IBAction)calculate{
    MyClass *setnum = [[MyClass alloc]init];
    setnum.grade_num = grade;
    setnum.stage_num = stage;
    setnum.ex_lym = ex_ly;
    setnum.pos_lym = pos_ly;
    setnum.er_num = er;
    setnum.noderatio = pos_ly/ex_ly;



    if(text1.text.length <=0 ||text2.text.length <=0||text3.text.length<=0||text4.text.length<=0||text5.text.length <=0){

        UIActionSheet *action = [[UIActionSheet alloc]initWithTitle:@"Incomplete Values" delegate:self cancelButtonTitle:@"Ok" destructiveButtonTitle:nil otherButtonTitles:nil];    
        [action showInView:self.view];
        [action release];

    }else{
        answer *ans =[[answer alloc]initWithNibName:nil bundle:nil];
        [self presentModalViewController:ans animated:YES];

      float i =   calc_gain(setnum.grade_num, setnum.noderatio, setnum.stage_num, setnum.er_num);  
        NSString *result = [NSString stringWithFormat:@"%f",i];

        ans.answer1.text = result;
        ans.bar.hidden = NO;



        [ans release];
    }
    [setnum release];

}
4

2 に答える 2

1

提供されているコンテナー ビュー コントローラー (iPad では UITabBarController、UINavigationBarController、または UISplitViewController など) のいずれかを使用することを検討する必要があります。

presentModalViewController の使用方法は、おそらく間違った方法です。1 つには、presentModalViewController を呼び出すと、ビューが保持されます。したがって、新しいコントローラーを割り当て続け、presentModalView を介してそれらのビューを表示すると、各ナビゲーション ステップでメモリ フットプリントが増加します。

一般に、別のモーダル ViewController を表示する ViewController は、それを再び却下する責任もあります。したがって、モーダル ビュー コントローラーを閉じる方法は、提示されたコントローラーが委任を通じてその親に通知し、親に閉じるように依頼することです (多くの場合、「完了」ボタンをタップします)。

modalViewControllers をスタックすることがサポートされているシナリオであるかどうかさえわかりませんが、少なくともドキュメントに他の方法で記載されているものは見つかりませんでした。

于 2011-08-31T17:21:12.850 に答える
0

昨日ここで質問されました:

iPhone アプリケーションのビューを切り替える - これは正しい方法ですか?

これを行う別の良い方法は、これを実行して unvanigationcontroller を追加することだと思います。

[self.navigationController pushViewController:second animated:YES];
于 2011-08-31T17:09:28.260 に答える