How can I use an Embed Segue in iOS 5?

大城市里の小女人 提交于 2020-01-12 05:43:29

问题


iOS 6 introduced the Embed Segue, allowing custom container controllers to be used in Storyboards. Is there anyway to duplicate this for iOS 5?


回答1:


The challenge here is that the child view controller's view is often to be added as a subview of some container view of the parent view controller. Since you can't have segues from random UIView controls, that defies creating segues from a UIView container view to the child's scene. Thus, you just have to write the code yourself.

Fortunately, it's just those four lines of code referenced in Adding a Child Controller from the View Controller Programming Guide. Personally, I'd might even modify that code slightly, having the following method defined in my view controller:

- (void) displayChildController:(UIViewController*)childController
                inContainerView:(UIView *)containerView
{
   [self addChildViewController:childController];                 // 1
   childController.view.frame = containerView.bounds;             // 2
   [containerView addSubview:childController.view];
   [childController didMoveToParentViewController:self];          // 3
}

I have, though, done custom segues for changing the active child controller from one scene to the next, but it essentially just a variation of the code listed later in the above referenced document. But that's not an embed segue question, so that's not relevant here




回答2:


I duplicated the functionality by subclassing UIStoryboardSegue.

In Interface Builder, I create a custom segue and set its' class to my subclass (QCEmbedSegue). In my parent view controller's viewDidLoad, I call performSegueWithIdentifier:sender.

QCEmbedSegue simply overrides perform:

- (void)perform
{
    [self.sourceViewController addChildViewController:self.destinationViewController];
    [[self.sourceViewController view] addSubview:[self.destinationViewController view]];
    [self.destinationViewController didMoveToParentViewController:self.sourceViewController];
}

http://www.quentamia.com/blog/embed-segue-in-ios-5/



来源:https://stackoverflow.com/questions/14715306/how-can-i-use-an-embed-segue-in-ios-5

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!