双向故事板旅行不堆叠

  • 推塞入堆栈视图控制器,同时popup'垛'他们。
  • Modal在堆叠视图控制器的同时解放了它们。

我正在尝试创build一个自定义的segue,以便在任何方向上以线性(平面)层次结构在VC之间移动,而不会在任何方向上堆叠。 看起来,风险投资家之间在两个方向上的分歧都可以防止解雇。

有任何想法吗?

如果你不想要任何堆栈,只要让你的执行方法用目标视图控制器replace窗口的根视图控制器。 源视图控制器将被解除分配(只要你没有创build任何强引用)。

-(void)perform { UIWindow *win =[self.sourceViewController view].window; win.rootViewController = self.destinationViewController; } 

处理旋转和两个方向的更好方法是向第一个控制器(使其成为整个视图的大小)添加一个容器视图(在IB中),然后从embedded式控制器连接此定制的Segue当你在容器视图中拖动时你会得到。 这个代码切换出另一个控制器的embedded式控制器。

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

在这里输入图像说明