UIImageView странная проблема свойства изображения - PullRequest
0 голосов
/ 07 февраля 2011

Я имею дело с очень простой задачей, которая как-то создает некоторые трудности ...

Все, что я пытаюсь сделать, - это создать контроллер представления и установить для его свойства изображения UIImageView какое-то изображение. Когда я пытаюсь это сделать, я получаю ноль = \

GenericViewController *genericViewController = [[GenericViewController alloc] init];
UIImage *image = [UIImage imageNamed:@"Camera.png"];
genericViewController.genericImageView.image = image;
NSLog(@"%@", genericViewController.genericImageView.image);

Выход: (ноль)

1 Ответ

1 голос
/ 07 февраля 2011

Полагаю, 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;
}

Этот метод, помимо того, что он более модульный и архитектурно-надежный, также имеет преимущество, когда если представление контроллера представления выгружается (скажем, другое представление помещается в стек навигации и появляется предупреждение о памяти), когдазагруженный он все равно будет иметь изображение.

...