Children view controllers must have a common parent view controller?
You can use this:
When you use
addChildViewController:
to add the child view controller to the surrounding one. You also have to notify the child controller bydidMoveToViewController:
that it has been put into another controller. You can also usetransitionFromViewController:toViewController:
to exchange one view controller for another, optionally giving an animation.
This was taken from here (I would advise you to fully read the accepted answer).
Long story short, you also need to inform that it did move into that parent view controller.
SimplyKiwi
Mobile Tech Lead at SimplyKiwi. Senior iOS Engineer at Rose Digital.
Updated on June 04, 2022Comments
-
SimplyKiwi almost 2 years
In my app I am attempting to switch views which each is their own XIB while using custom animations to do so. I made a base view controller as a parent view to hold all the code but I just can't seem to get this to work.
I made an IBOutlet for all of the view controllers in my app and in interface builder, I connect the outlets to the proper controller. Each controller loads the proper XIB too so none of that is the issue. The issue is the following changing views code.
This is my code:
-(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];
And this is the console crash:
*** 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:]'
Does anyone know how to fix this?
Thanks!