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

如果您还没有,我建议您阅读 View Controller Programming Guide:http: //developer.apple.com/iphone/library/featuredarticles/ViewControllerPGforiPhoneOS/Introduction/Introduction.html

听起来以模态方式呈现视图控制器可能是您最好的选择 - 但您可能希望首先将其包装在 UINavigationController 中。

例如

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

我经常想知道这是否是我自己最好的方法,但是当我不使用 IB 的内置东西(如 NavigationController)时,我在 AppDelegate 中有一个方法switchToViewController:(UIViewController *)viewController,我通过了......嗯,这很自我-解释我猜。这样,只有一个地方可以完成,一旦应用程序接近完成,我可以轻松地在该方法中定义转换。

另外,不要忘记删除方法中以前的视图,否则可能会耗尽内存。像这样的东西:

-(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 回答