У меня есть UIViewController
под названием LaunchController, который запускается в моем приложении для iPhone при первом запуске приложения:
@interface LaunchController : UIViewController<UINavigationControllerDelegate, UIImagePickerControllerDelegate>
Затем, когда нажимается кнопка, я нажимаю другой контроллер вида:
MainController *c = [[MainController alloc] initWithImage:image];
[self presentModalViewController:c animated:NO];
MainController имеет следующий конструктор, который я использую:
- (id)initWithImage:(UIImage *)img
{
self = [super init];
if (self) {
image = img;
NSLog(@"inited the image");
}
return self;
}
и затем он имеет метод viewDidLoad следующим образом:
- (void)viewDidLoad
{
NSLog(@"calling view did load");
[super viewDidLoad];
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
[self.view addSubview:imageView];
NSLog(@"displaying main controller");
}
Когда программа запускается, я вижу, что вызывается конструктор для MainController
(из-за вывода NSLog
), однако viewDidLoad
никогда не вызывается, даже если я вызываю presentModalViewController
. Почему это? Почему не звонят viewDidLoad
?