Since it seems that you are using Storyboard and want to keep your views easily editable I suggest the following structure:
In your main view, add a Container to your Main View with its corresponding auto-layout constraints.
Then, create two .xib files which contain your two views and their design. Inside this .xib, set your constraints for the inner elements.
Then, in your Main View's View Controller, using your Button's outlet function instantiate either of your .xib files as a child-view for your container.
if let customView = NSBundle.mainBundle().loadNibNamed("CustomView", owner: self, options: nil).first as? CustomView {
contentView.addSubview(customView)
customView.setTranslatesAutoresizingMaskIntoConstraints(false)
contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|-0-[view]-0-|", options: NSLayoutFormatOptions(0), metrics: nil, views: ["view":customView]))
contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|-0-[view]-0-|", options: NSLayoutFormatOptions(0), metrics: nil, views: ["view":customView]))
}
(Credit for this code goes to: http://www.thomashanning.com/loading-a-view-from-a-xib/)
If you need your child-views to communicate with the parent view, you can simply add delegate functions to your child views and set your main view as the delegate as you instantiate your new .xib.
You can find more detailed instructions on working with delegates in objective-c here: How do I create delegates in Objective-C?
By using this method, you can easily edit your child views in storyboard mode by editing editing the .xib files, and at the same time, it makes instantiation of these views inside your parent view quite simple and straightforward.