我需要显示几个视图控制器(例如,登录屏幕,注册屏幕等)。每个屏幕最好的方法是什么?
目前,对于我想要显示的每个屏幕,我在app delegate中调用了一个不同的方法,如下所示: 代码:
- (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];
}
它有效,但我无法想象它是最好的方式。
答案 0 :(得分:3)
听起来像是以模态方式呈现视图控制器可能是您最好的选择 - 但您可能希望首先将其包装在UINavigationController中。
例如
UINavigationController *navController = [[[UINavigationController alloc] initWithRootViewController:theControllerYouWantToPresent] autorelease];
[self presentModalViewController:navController animated:YES];
答案 1 :(得分: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];
}