Preparing a walkthrough: Freeze effect :s
The problem here isn't going to just be that the segue is performed slowly.  At a certain point, if you add enough view controller's views to this scroll view, it's very likely that you'll run into memory issues as well, particularly on mobile devices.

We have a scroll view.  Only one screen's worth of the scroll view can be on the screen at any given time.  But in viewWillAppear, we are attempting to load several screen's worth of views onto our scroll view all at once.  This takes time.  And the more views you are adding to it, the more time it takes.

Consider UITableView and UICollectionView are both direct subclasses of UIScrollview.  How do these guys handle adding views to the scroll view?  They do it one at a time, as needed.

If you put a breakpoint or any sort of print statement in the cellForRowAtIndexPath: (or the collection view equivalent), you'll see that this method is only called for any given cell just as that index path is about to scroll on screen.

Using your approach of adding at the views at the same time means you'll holding them all in memory at once, so there's a top end cap on how many views you can stick on there, and it means you're loading them all at once, so there's a big block of time where it takes to run through adding them to the scroll view.  With a table view or collection view, it's not necessarily any faster to add each individual view to the screen, but only the ones necessary are added at once.  Moreover, as views scroll off the screen, they're released from memory as new ones are added.  So you can have an unlimited number of views on the collection view without running out of memory and without it taking an unmanageably long amount of time to load.

Instead of re-inventing the wheel and try to implement some UIScrollViewDelegate methods by hand to add and remove your views as they're needed, I instead recommend that you change your scroll view to a collection view and work with that.