2011-02-07 79 views
0

我负责的一个超级容易的事,不知怎的,引入一些困难......的UIImageView怪异图像财产问题

所有我想要做的就是创建一个视图控制器及其的UIImageView的图像属性设置为一些图片。 当我尝试,我得到零= \

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

输出:(空)

回答

1

我想象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; 
} 

这种方法,除了作为更具模块化和体系结构的声音,如果视图控制器的视图被卸载(也就是说,另一个视图被压入导航堆栈并且出现内存警告),则当它被重新加载时,它仍然具有图像。

+0

你的意思是“在其制定者”对吧? – Rizon 2011-02-07 21:25:34