JeffN
JeffN

Reputation: 1605

Add a storyboard view as a subview of a programmatically created view

I have created a special class of UIView that has certain properties, and I did so programmatically because it is usually blank but will at times contain other views. I know that if I create a UIView programmatically I can do something like [specialView addSubview: aView];

My problem is that there is a UIView that I created in storyboard and I need to add that UIView as a subview on my special view. I have connected it as a property in my ViewController but when I do the same code as above, nothing happens. Thoughts?

Upvotes: 8

Views: 8113

Answers (3)

KPM
KPM

Reputation: 10608

MyViewController *myViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"MyScene"]; 
[specialView addSubview:myViewController.theViewToAdd]; 

And don't forget to give such an identifier to your scene (view controller) in Interface Builder.

Upvotes: 9

Vineeth
Vineeth

Reputation: 1750

Another solution is you can add the viewcontroller as a childviewcontroller.

    func displayContentController(content: UIViewController) {
    addChildViewController(content)
    self.view.addSubview(content.view)
    content.didMoveToParentViewController(self)
}

To remove :

func hideContentController(content: UIViewController) {
    content.willMoveToParentViewController(nil)
    content.view.removeFromSuperview()
    content.removeFromParentViewController()
}

Upvotes: 2

Brian Liang
Brian Liang

Reputation: 7774

That UIViewController which houses the view you want may not be instantiated. So you would need to instantiate that controller and grab the view from there.

Upvotes: 0

Related Questions