UIImageView奇怪的图像属性问题

时间:2011-02-07 20:45:58

标签: iphone objective-c iphone-sdk-3.0 ios4 uiimageview

我正在处理一个超级简单的任务,不知何故引入了一些困难......

我要做的就是创建一个视图控制器并将其UIImageView的图像属性设置为某个图像。 当我尝试这个时,我得到nil = \

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

输出:(null)

1 个答案:

答案 0 :(得分:1)

我认为genericImageView是在笔尖或-loadView方法中设置的。但是,在您尝试访问图像视图时,尚未加载VC的视图。快速解决方法是致电

(void)genericViewController.view;

访问genericImageView之前。这将强制加载视图。 “更好”的方法是给genericViewController一个你指定的图像属性,然后在它的setter中你可以说

- (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;
}

这种方法除了更具模块化和架构声音之外,还具有以下优点:如果视图控制器的视图被卸载(例如,另一个视图被推入导航堆栈并且出现内存警告), - 它仍然会有图像。