我有一个视图控制器,当我按下一个按钮时,会出现一个子视图控制器。这个功能非常完美,但是如果我按下这个按钮内部的下一个按钮来执行两步登录,我想要更改这个子视图控制器为其他一个。 有什么想法吗?因为从主视图控制器中,我知道如何显示一个子视图,但从子视图控制器中,我不知道如何做到。
我有一个视图控制器,当我按下一个按钮时,会出现一个子视图控制器。这个功能非常完美,但是如果我按下这个按钮内部的下一个按钮来执行两步登录,我想要更改这个子视图控制器为其他一个。 有什么想法吗?因为从主视图控制器中,我知道如何显示一个子视图,但从子视图控制器中,我不知道如何做到。
ReplaceSegue.h
@interface ReplaceSegue : UIStoryboardSegue
@end
替换Segue.m
@implementation ReplaceSegue
- (void)perform
{
UIViewController *source = self.sourceViewController;
UIViewController *destination = self.destinationViewController;
UIViewController *container = source.parentViewController;
[container addChildViewController:destination];
destination.view.frame = source.view.frame;
[source willMoveToParentViewController:nil];
[container transitionFromViewController:source
toViewController:destination
duration:0.5
options:UIViewAnimationOptionTransitionCrossDissolve
animations:^{
}
completion:^(BOOL finished) {
[source removeFromParentViewController];
[destination didMoveToParentViewController:container];
}];
}
@end
接下来,您可以打开故事板,在容器视图控制器上放置一个容器视图,并在子控制器上,从第一个子场景到第二个子场景放置一个自定义转场。您需要为两个子场景之间的自定义转场指定 ReplaceSegue
类:
请注意,如果您在第二个子视图上正确使用了自动布局或自动调整大小,一切都将正常工作(特别是在目标控制器视图中手动设置框架的 ReplaceSegue
中)。但是在界面构建器中,第二个子场景的布局看起来不太对,并且可能会使场景的适当设计有点尴尬,因为(至少在 Xcode 4.5 中)第二个子场景的“模拟度量”无法推断出适当的大小。因此,您应该将第二个子场景的模拟度量大小从“推断”更改为“自由形式”,然后手动调整第二个子场景的大小:
这不是很优雅的 Xcode 体验,但它有效。如果您正确使用自动布局或自动大小调整掩码,则可以很好地处理小的变化。