Sometimes, instead of traditional nib loading, you may want to use the following method:
[[NSBundle mainBundle] loadNibNamed:@"MyViewController" owner:self options:options];
For instance, if you want to provide a runtime replacement for proxy object in your nib (see UINibExternalObjects).
If you do this and you also need to perform setup after the nib loads, you’ll come across an unexpected behavior.
viewDidLoad will not be called (Nor does awakeFromNib).
I wouldn’t classify it as a “bug”, I can see the rationale, but it is dubious and I have (so far) been unable to find any documentation on this behavior.
So if you do need to do some setup, place it in viewWillAppear (You are using a UINavigationController or UITabBarController, aren’t you?).