ios – 更改子视图控制器

前端之家收集整理的这篇文章主要介绍了ios – 更改子视图控制器前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个视图控制器,当我按下一个按钮时,出现一个子视图控制器.这是完美的工作,但我想要更改这个子视图控制器为另一个,如果我按下这个按钮旁边的按钮做两步登录.
任何想法?因为从主视图控制器我知道如何显示一个孩子,但从孩子我不知道该怎么做.

解决方法

如果使用故事板,您可以创建自己的孩子替换segue,例如:

ReplaceSegue.h

@interface ReplaceSegue : UIStoryboardSegue

@end

ReplaceSegue.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类:

请注意,如果您在第二个子视图上正确使用autolayout或自动调整大小,则所有内容都可以正常运行(尤其是在ReplaceSegue中手动设置目标控制器视图的框架).但是在Interface Builder中,第二个孩子场景的布局看起来并不正确,可以使场景的正确设计有点尴尬,因为(至少Xcode 4.5)第二个孩子的“模拟度量”场景做得不好,推测出适当的大小.所以你应该将第二个孩子场景的模拟度量尺寸从“推断”改为“自由”,然后手动调整第二个子场景的大小:

它不是很优雅的Xcode体验,但它的作品.如果您正确使用自动布局或自动调整面具,则会非常优雅地处理较小的变体.

猜你在找的iOS相关文章