Вы проверили, что представление контроллера было загружено, прежде чем установить изображение?Контроллеры UIViewControllers не загружают свое представление, пока оно не отображается, и иногда выгружают его, когда оно находится за пределами экрана, поэтому viewDidLoad, возможно, не был вызван в тот момент, когда вы вызываете ваш
[albumContainer setImage:tempImage];
извне контроллера.Попробуйте зарегистрировать albumContainer, чтобы увидеть, равен ли он нулю, прежде чем устанавливать изображение, например:
NSLog(@"albumContainer: %@", albumContainer); //might log as null
[albumContainer setImage:tempImage];
Чтобы принудительно загрузить представление контроллера, вы можете сказать:
[controller view]; // this will load the view and call viewDidLoad
[albumContainer setImage:tempImage];
Но вы можетеЛучше всего создать альбом albumContainer в initWithNibName: bundle: метод вашего контроллера представления, а не в viewDidLoad, например:
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)bundleOrNil
{
if ((self = [super initWithNibName:nibNameOrNil bundle:bundleOrNil]))
{
albumContainer = [[UIImageView alloc]initWithFrame:CGRectMake(112, 7, 97, 97)];
[self.view addSubview:albumContainer];
}
return self;
}
Таким образом, он будет создан одновременно с контроллером, даже еслипредставление еще не загружено.