2011-02-07 75 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