storyboard instantiateViewControllerWithIdentifier not setting IBOutlets

BlueFish picture BlueFish · Sep 21, 2012 · Viewed 13.9k times · Source

I am using storyboard instantiateViewControllerWithIdentifier: and I'm noticing that all the IBOutlets I have wired up are still nil. However, the IBActions I have wired up work. The view and controller are linked (i.e controller.view is not nil), and if I show the view it displays what I am expecting.

What am I missing?

Here's my setup:

  1. I've got a View Controller defined in my storyboard. I have given it an identifier which is the same identifier I use when invoking instantiateViewControllerWithIdentifier:
  2. I've set up the view's owner by clicking on the View Controller (just under First Responder) and under the Identity Inspector set the Custom Class to be the same name as the class I want to wire the view to.
  3. Then I open up Assistant editor, and control dragged the UI elements to create the IBOutlets and IBActions.

Answer

Stefan Henze picture Stefan Henze · Dec 6, 2012

The view seems to be initialized properly only after it is accessed first. The problem goes away when calling

[self presentViewController:vc animated:NO completion:nil];

or more simply

[vc view];