PresentViewController автоматически уничтожает предыдущие представления?

Я использую кучу пользовательских переходов для перехода от одного представления контроллера представления к другому, используя:

[self performSegueWithIdentifier:@"createTeamAccountSegue" sender:self];

Мой вопрос: автоматически ли уничтожаются предыдущие представления в iOS5 и 6?

Мне все время приходится создавать пользовательские переходы, чтобы перейти к следующему представлению, а затем создавать еще одну новую анимацию перехода в обратном порядке, чтобы вернуться к последнему представлению. Пока они не продолжают накапливаться, тогда все должно быть в порядке, верно?

РЕДАКТИРОВАТЬ: я, вероятно, должен показать вам общий макет того, как выглядит мой пользовательский класс UIStoryboardSegue:

- (void) perform {

UIViewController *sourceViewController = (UIViewController *) self.sourceViewController;
UIViewController *destinationViewController = (UIViewController *) self.destinationViewController;

UIView *parent = sourceViewController.view.superview;

[parent addSubview:destinationViewController.view];
[parent sendSubviewToBack:destinationViewController.view];

sourceViewController.view.layer.masksToBounds = NO;
sourceViewController.view.layer.cornerRadius = 8; // if you like rounded corners
sourceViewController.view.layer.shadowOffset = CGSizeMake(0,0);
sourceViewController.view.layer.shadowRadius = 10;
sourceViewController.view.layer.shadowOpacity = 1;

destinationViewController.view.frame = CGRectMake(0, 20, destinationViewController.view.frame.size.width, destinationViewController.view.frame.size.height);
sourceViewController.view.frame = CGRectMake(0, 20, sourceViewController.view.frame.size.width, sourceViewController.view.frame.size.height);

[UIView animateWithDuration:.3 delay:0.0 options:UIViewAnimationCurveEaseInOut animations:^
 {
     sourceViewController.view.frame = CGRectMake(0, parent.frame.size.height, sourceViewController.view.frame.size.width, sourceViewController.view.frame.size.height);

 } completion:^(BOOL finished)
 {
     [sourceViewController presentViewController:destinationViewController animated:NO completion:NULL];
 }];

}


person Deminetix    schedule 27.09.2012    source источник
comment
Ах! Отдавать обратно! Я сделаю так :)   -  person Deminetix    schedule 27.09.2012


Ответы (1)


Если вы выполняете переходы в UINavigationController, то нет, они не уничтожаются. Чтобы вернуться к одному, вы должны использовать [self.navigationController popViewControllerAnimated:YES];

person Ian Hoar    schedule 27.09.2012
comment
Мой начальный контроллер представления — это UINavigationController -> Root View Controller, который проверяет, вошел ли пользователь в систему, а затем использует настраиваемые переходы с presentViewController для отображения либо представления входа в систему, либо представления входа в систему. Есть ли проблемы с этим? - person Deminetix; 27.09.2012
comment
Есть много способов это выложить. Я предпочитаю представлять контроллер модального представления с методом делегата на корневом контроллере, который вызывается, если вход в систему выполнен успешно или если ключ API установлен в NSUserDefaults. Таким образом, вы можете относиться к процессу входа в систему как к чему-то, что на самом деле является модальным, т.е. требует действия, а остальная часть вашего приложения считается обычным потоком нажатия и выталкивания контроллеров представления. - person Ian Hoar; 27.09.2012
comment
Я не могу не чувствовать, что делаю что-то не так с пользовательскими переходами. Моя раскадровка выглядит так и имеет переходы вперед и назад, а не один, как на других раскадровках, которые я вижу: i. imgur.com/nThGo.png - person Deminetix; 27.09.2012
comment
Обратный переход не нужен. Просто создайте переход к экрану входа в систему, выберите модальный стиль и установите действие кнопки входа в систему для вызова [self.navigationController rejectModalViewControllerAnimated:YES]; - person Ian Hoar; 27.09.2012
comment
Проблема в том, что представления должны иметь пользовательские анимации, а модальные предоставляют только несколько основных. - person Deminetix; 27.09.2012
comment
Если вы хотите сделать что-то вроде переворота страницы или флипа, вы можете использовать немодальные переходы и использовать действие кнопки для вызова [self.navigationController popViewControllerAnimated:YES]; Ваши переходы помещают контроллеры просмотра в стек, управляемый контроллером навигации, поэтому, чтобы отменить это, вы должны вытолкнуть. - person Ian Hoar; 27.09.2012