我正在处理一个超级简单的任务,不知何故引入了一些困难......
我要做的就是创建一个视图控制器并将其UIImageView的图像属性设置为某个图像。 当我尝试这个时,我得到nil = \
GenericViewController *genericViewController = [[GenericViewController alloc] init];
UIImage *image = [UIImage imageNamed:@"Camera.png"];
genericViewController.genericImageView.image = image;
NSLog(@"%@", genericViewController.genericImageView.image);
输出:(null)
答案 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;
}
这种方法除了更具模块化和架构声音之外,还具有以下优点:如果视图控制器的视图被卸载(例如,另一个视图被推入导航堆栈并且出现内存警告), - 它仍然会有图像。