子视图控制器必须有一个共同的父视图控制器?

Sim*_*iwi 4 transition view uiviewcontroller ios ios5

在我的应用程序中,我尝试切换视图,每个视图都是他们自己的XIB,同时使用自定义动画.我创建了一个基本视图控制器作为父视图来保存所有代码,但我似乎无法让它工作.

我为我的应用程序和界面构建器中的所有视图控制器创建了一个IBOutlet,我将插座连接到适当的控制器.每个控制器也加载适当的XIB,所以这都不是问题所在.问题是以下更改视图代码.

这是我的代码:

-(void)changeViews {
    CGRect frame = self.view.frame;
    frame.origin.x = CGRectGetMaxX(frame);
    theView4.view.frame = frame;

    [self.view addSubview:theView4.view];
    [self addChildViewController:theView4];

    [self transitionFromViewController:theView1 
                      toViewController:theView4 
                              duration:1 
                               options:UIViewAnimationOptionTransitionNone
                            animations: ^{
                                CGRect frame = self.view.frame;
                                theView4.view.frame = frame;
                                frame.origin.x -= frame.size.width;
                                self.view.frame = frame;
                            }
                            completion:completion:nil];
Run Code Online (Sandbox Code Playgroud)

这是控制台崩溃:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Children view controllers <MyGameViewController: 0x1dd25210> and <Settings: 0x1dd249d0> must have a common parent view controller when calling -[UIViewController transitionFromViewController:toViewController:duration:options:animations:completion:]'
Run Code Online (Sandbox Code Playgroud)

有谁知道如何解决这一问题?

谢谢!

Rui*_*res 5

你可以用这个:

当您使用addChildViewController:的子视图控制器添加到周围的一个.您还必须通知子控制器didMoveToViewController:它已被放入另一个控制器.您还可以使用 transitionFromViewController:toViewController:一个视图控制器交换另一个视图控制器,可选择提供动画.

这是从这里采取的(我建议你完全阅读接受的答案).

长话短说,您还需要告知它确实进入了父视图控制器.