Полагаю, genericImageView
устанавливается либо в кончике, либо в методе -loadView
.Однако в тот момент, когда вы пытаетесь получить доступ к представлению изображения, представление для VC еще не загружено.Быстрое решение состоит в том, чтобы позвонить
(void)genericViewController.view;
перед доступом к genericImageView
.Это заставит представление загрузить.«Лучшим» подходом было бы дать genericViewController
свойство изображения, которое вы назначаете, тогда в его установщике вы можете сказать
- (void)setGenericImage:(UIImage *)image {
if (_genericImage != image) {
[_genericImage release];
_genericImage = [image retain];
if ([self isViewLoaded]) {
self.genericImageView.image = image;
}
}
}
, а в -viewDidLoad
вы можете сказать
- (void)viewDidLoad {
[super viewDidLoad];
self.genericImageView.image = self.genericImage;
}
Этот метод, помимо того, что он более модульный и архитектурно-надежный, также имеет преимущество, когда если представление контроллера представления выгружается (скажем, другое представление помещается в стек навигации и появляется предупреждение о памяти), когдазагруженный он все равно будет иметь изображение.