I've created a UIViewController that we can call MyViewController1. When I call MyViewController1, all my IBOutlet are nil in viewDidLoad (and in the rest of the code too).
When I create this controller by doingMyViewController1 *vc = [[MyViewController1 alloc] init],
if I replace MyViewController1 by an other one, for example MyViewController2, it works. So I guess the problem is really in MyViewController1.
Last thing you might want to know, is that MyViewController1 is actually a subclass of MySuperViewController1 that is a UIViewController.
Thanks for your help !
EDIT
I realized my case was maybe more complicated. Here are my exact files :
// MySuperViewController1
MySuperViewController1.h
MySuperViewController1.m
MySuperViewController1.xib
// MyViewController1
MyViewController1.h
MyViewController1.m
So the nib belongs to the superclass, and not the subclass. Can I do that ?
You should probably use :
MyViewController1 *vc = [[MyViewController1 alloc] initWithNibName:@"MyViewController1" bundle:nil]
calling init won't do the match with your xib file and won't alloc your differents IBOutlet
EDIT :
There are two possibles solutions :
First is calling init with super nibName :
MyViewController1 *vc = [[MyViewController1 alloc] initWithNibName:@"MySUperViewController1" bundle:nil]
The second is calling the super initWithNibName: in child init method :
-(id)init {
if (self = [super initWithNibName:@"MySuperViewController1" bundle:nil]) {
// Init
}
return self;
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With