Если вам не нужен какой-либо стек, просто попросите свой метод выполнения заменить контроллер представления корневого окна на контроллер назначения. После этого диспетчер представлений источника будет освобожден (пока вы не создадите для этого никакой ссылки).
-(void)perform {
UIWindow *win =[self.sourceViewController view].window;
win.rootViewController = self.destinationViewController;
}
Лучший способ сделать это, что ручки вращения и обе ориентации, чтобы добавить вид контейнера (в МБ) к первому контроллеру (сделать его размером всего зрения), а затем подключить его пользовательский segue из встроенного контроллера, который вы получаете, когда перетаскиваете контейнер. Этот код отключает встроенный контроллер для другого контроллера.
-(void)perform {
UIViewController *source = self.sourceViewController;
UIViewController *dest = self.destinationViewController;
UIViewController *parent = source.parentViewController;
[parent addChildViewController:dest];
dest.view.frame = parent.view.bounds;
[source willMoveToParentViewController:nil];
[parent transitionFromViewController:source toViewController:dest duration:.6 options:UIViewAnimationOptionTransitionCrossDissolve animations:^{}
completion:^(BOOL finished) {
[source removeFromParentViewController];
[dest didMoveToParentViewController:parent];
[self constrainView:dest.view equalToView:parent.view];
}];
}
-(void)constrainView:(UIView *) childView equalToView:(UIView *) parentView {
[childView setTranslatesAutoresizingMaskIntoConstraints:NO];
NSLayoutConstraint *con1 = [NSLayoutConstraint constraintWithItem:childView attribute:NSLayoutAttributeCenterX relatedBy:0 toItem:parentView attribute:NSLayoutAttributeCenterX multiplier:1 constant:0];
NSLayoutConstraint *con2 = [NSLayoutConstraint constraintWithItem:childView attribute:NSLayoutAttributeCenterY relatedBy:0 toItem:parentView attribute:NSLayoutAttributeCenterY multiplier:1 constant:0];
NSLayoutConstraint *con3 = [NSLayoutConstraint constraintWithItem:childView attribute:NSLayoutAttributeWidth relatedBy:0 toItem:parentView attribute:NSLayoutAttributeWidth multiplier:1 constant:0];
NSLayoutConstraint *con4 = [NSLayoutConstraint constraintWithItem:childView attribute:NSLayoutAttributeHeight relatedBy:0 toItem:parentView attribute:NSLayoutAttributeHeight multiplier:1 constant:0];
NSArray *constraints = @[con1,con2,con3,con4];
[parentView addConstraints:constraints];
}
Есть ли какой-либо конкретной причине вы не хотите этого "укладки"? – Fogmeister
Каждый VC имеет графику и текст. Укладка VC приводит к чрезмерному распределению памяти и сбою на сетчатых устройствах. – Mat