2

いくつかのビュー コントローラー (ログイン画面、登録画面など) を表示する必要があります。各画面を表示する最良の方法は何ですか?

現在、表示したい画面ごとに、次のようにアプリのデリゲートで別のメソッドを呼び出します: コード:

- (void) registerScreen
{
 RegistrationViewController *reg = [[RegistrationViewController alloc] initWithNibName:@"RegistrationViewController" bundle:nil];
 [window addSubview:reg.view]; 
}
- (void) LoginScreen
{
 LoginViewController *log = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil];
 [window addSubview:log.view]; 
}

それは機能しますが、それが最善の方法であるとは想像できません。

4

2 に答える 2

3

まだ読んでいない場合は、ビュー コントローラー プログラミング ガイドを読むことをお勧めします

ビュー コントローラーをモーダルに表示するのが最善の策のように思えますが、最初に UINavigationController でラップすることをお勧めします。

例えば

UINavigationController *navController = [[[UINavigationController alloc] initWithRootViewController:theControllerYouWantToPresent] autorelease];
[self presentModalViewController:navController animated:YES];
于 2010-02-16T05:35:51.890 に答える
1

これが自分にとって最善の方法であるかどうかはよく疑問に思っていましたが、IB の組み込みのもの (NavigationController など) を使用していないときは、AppDelegate に 1 つのメソッドswitchToViewController:(UIViewController *)viewControllerを渡しています。 -説明だと思います。この方法では、1 つの場所だけで実行できるため、アプリが完成に近づいたら、そのメソッドで遷移を簡単に定義できます。

また、メソッド内の以前のビューを削除することを忘れないでください。そうしないと、メモリが不足する可能性があります。このようなもの:

-(void) switchToViewController:(UIViewController *)c {
    if(c == currentController) return;

    [currentController.view removeFromSuperview];
    [window addSubview:c.view];
    [currentController release];
    currentController = [c retain];
}
于 2010-02-16T05:32:18.733 に答える