Storyboard reference in Xcode, where should we use it?

IosXcodeXcode7

Ios Problem Overview


There is one new control in Xcode7 beta named as Storyboard Reference. Below is its image.

enter image description here

It has its description as

>Provides a placeholder for a view controller in an external storyboard. Segues connected to this placeholder will instantiate the referenced view controller at runtime.

So the questions are

  1. In which situations should we use this?
  2. Is this used to connect two storyboard's view controllers via segue?
  3. Is this approach used to replace VC of another storyboard programatically?
  4. Will it work on older iOS version(before iOS 9)?

Ios Solutions


Solution 1 - Ios

UPDATE (January 6, 2016): I just want to quickly mention that using Storyboard references is very simple and is going to help you use Storyboards in a much more clean and maintainable way. A good use case for it is e.g. a UITabBarController with multiple tabs. Just create one Storyboard for each tab and in your Main.Storyboard link to those individual Storyboards using Storyboard references. Usage is very straightforward: after creating a Storyboard reference you only need to give it the filename of the individual Storyboard that you want to link to and set the initial view controller within that individual Storyboard. That's it! :)

What follows now is the original answer I gave to @YogeshSuthar's question.

  1. this can be used in cases where you are using multiple storyboards in your app. until now you'd have to instantiate view controllers from other storyboards programmatically, seems like now you can just use this reference and create your segue in the storyboards just like with view controllers from the same storyboard

  2. yes, you connect one view controller from your current storyboard with another view controller from a different storyboard and you can create a segue between these two

  3. yes, this can be used to replace the code that was formerly used to instantiate view controllers from other storyboards programmatically

  4. [UPDATE thx to @AlexBasson] Storyboard references can deployed to iOS 8, OS X 10.10 and watchOS 1.

Solution 2 - Ios

Usage of Storyboard Reference

Well other answer's are correct to my questions.

And I want to post the usage of the Storyboard Reference which is used to open View controllers from another storyboard via segue without writing any code. :)

Steps

  1. First create 1 new storyboard name it anything you want(I named it NewStoryboard).
  2. Place your View controller(or any View Controller) in NewStoryboard.
  3. Give it a Storyboard ID(I have given newVC).

enter image description here

  1. Switch back to your main storyboard.
  2. Drag and drop Storyboard Reference control in this storyboard.
  3. Select the Storyboard Reference control and select Attributes Inspector.
  4. Select your new storyboard NewStoryboard.
  5. Provide Reference ID as newVC(which you used in NewStoryboard storyboard).
  6. Connect this Storyboard Reference via segue from ViewController. Now it will open this VC via segue without writing code. :)

enter image description here

Solution 3 - Ios

  1. Will it work on older iOS version(before iOS 9)?

Looks like maybe not :/

> Storyboard references required an app targeting at least iOS 9.0, OS X > 10.11, or WatchKit 2.0 for watchOS.

Source: watchOS Developer Library: Adding a Reference to Another Storyboard

Solution 4 - Ios

> 4. Will it work on older iOS version(before iOS 9)?

Here is a workaround (verified by Xcode 8 and iOS 8.2):

  1. In the view controller for the tab, add a container view whose frame takes up the entire view (add constraints to do this if necessary).
  2. Delete the embedded view controller that was automatically added by the container view.
  3. Create your storyboard reference and drag the embed segue from the container view to this reference.
  4. If you haven't already, create the Storyboard and assign the Storyboard reference to it.
  5. In the new Storyboard, you can simulate the appearance of the tab bar by selecting the first View Controller and in the Attributes Inspector, under Simulated Metrics -> Bottom Bar, selecting a Tab Bar to show (ex. Translucent).

screenshot

Solution 5 - Ios

Just tested storyboard reference in Xcode 7 with iOS 8 and it failed.

Illegal Configuration: Storyboard References cannot be the destinations of 
relationship segues prior to iOS 9.0

Solution 6 - Ios

On the last iOS Developer Library documentation for Xcode Releases is added this note as well (Current version: Xcode 7.2.1):

> Storyboard References may now be deployed to iOS 8, OS X 10.10, and > watchOS 1.

That means good news but still keep in mind that:

> Storyboard References cannot be the destinations of relationship > segues prior to iOS 9.0

So if you are aware of these two bullet points, then you are good to go :)

Solution 7 - Ios

> When we have a big application with too many screens and modules, > Dividing storyboard into multiple storyboards as per modules is a good > and convenient option. While using multiple storyboard, if you need to > connect segue between viewControllers of different storyboard, you can > use this control. If you are using this control, No need to do coding stuffs like instantiateViewController and pushViewController etc. You can just connect the segue, perform the segue and if you need you can use prepareForSegue.

Let's discuss your all questions :

  1. In which situations should we use this? - I think you have find your answer above.

  2. Is this used to connect two storyboard's view controllers via segue? - YES

  3. Is this approach is used to replace VC of another storyboard programmatically? - Nothing to do with coding while using this control

  4. Will it work on older iOS version(before iOS 9)? - It may work, I have not try it

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionYogesh SutharView Question on Stackoverflow
Solution 1 - IosnburkView Answer on Stackoverflow
Solution 2 - IosYogesh SutharView Answer on Stackoverflow
Solution 3 - IosBenView Answer on Stackoverflow
Solution 4 - IosNianliangView Answer on Stackoverflow
Solution 5 - IosyangtView Answer on Stackoverflow
Solution 6 - IosE-RiddieView Answer on Stackoverflow
Solution 7 - IosNirav GadhiyaView Answer on Stackoverflow