iosiphoneobjective-ciboutletinitwithcoder

Objective-C iOS Development Using viewDidLoad or initWithCoder when setting Variables and Why?


So it seems like I should be setting my member variables in viewDidLoad - but I am confused as to why setting these variables in initWithCoder fails, since both are called at the start of the program.

In particular I have a line of code:

[worldView setMapType:MKMapTypeSatellite];

In which worldView is a IBOutlet MKMapView object. It works under viewDidLoad, but not initWithCoder.


Solution

  • The objects do not yet exist when initWithCoder is called, and they do when viewDidLoad is called. Check your initWithCoder method by logging out the value of worldView using something like:

    NSLog(@"World View: %@", worldView);
    

    and it will be nil. They will be initialized before the call to viewDidLoad, so you can set a property of that IBOutlet there.