лучшие практики для отображения новых контроллеров представления (iPhone) - PullRequest
2 голосов
/ 16 февраля 2010

Мне нужно отобразить пару контроллеров представления (например, экран входа в систему, экран регистрации и т. Д.). Какой лучший способ поднять каждый экран?

В настоящее время для каждого экрана, который я хотел бы отобразить, я вызываю другой метод в делегате приложения, например: Код:

- (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]; 
}

Это работает, но я не могу представить, что это лучший способ.

Ответы [ 2 ]

3 голосов
/ 16 февраля 2010

Я бы рекомендовал прочитать Руководство по программированию View Controller, если у вас нет: http://developer.apple.com/iphone/library/featuredarticles/ViewControllerPGforiPhoneOS/Introduction/Introduction.html

Звучит так, будто модальное представление контроллера может быть лучшим выбором, но вы, возможно, захотите сначала обернуть его в UINavigationController.

например

UINavigationController *navController = [[[UINavigationController alloc] initWithRootViewController:theControllerYouWantToPresent] autorelease];
[self presentModalViewController:navController animated:YES];
1 голос
/ 16 февраля 2010

Я часто задавался вопросом, является ли это лучшим способом самому, но когда я не использую встроенный материал 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];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...