2012-01-14 103 views
4

.H無法更改的UIImageView

IBOutlet UIImageView *photoImageView; 
UIImage *photo; 

.M(在viewWillAppear中)的圖像

photoImageView.image = photo; 

觀點出現後,我無法使用改變photoImageView

photoImageView.image = [UIImage imageNamed:@"XXX.png"]; 

但改變photo作品的價值。

photo = [UIImage imageNamed:@"XXX.png"]; 

它是如何工作的?

+2

你是說如果你改變iVar的'照片',photoImageView中的圖像也改變了?根據你迄今爲止所展示的內容,它不應該這樣做,但是你可能需要發佈更多的代碼,以便更好地瞭解發生了什麼。您是直接更改iVar還是使用屬性訪問器?如果您使用的是屬性訪問器,它是如何實現的? – 2012-01-14 15:16:03

回答

5

試試看看這個代碼。

//YourController.h 

@interface YourController : UIViewController 
{ 
    UIImageView* _photoImageView; 
} 

@property (retain, nonatomic) IBOutlet UIImageView *photoImageView; 

- (IBAction)changeImageAction:(id)sender; 

@end 

//YourController.m 

@synthesize photoImageView = _photoImageView; 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    self.photoImageView.image = [UIImage imageNamed:@"img.png"]; 
} 

- (IBAction)changeImageAction:(id)sender { 

    self.photoImageView.image = [UIImage imageNamed:@"img_2.png"]; 
} 

一些注意事項。

首先,您必須在XCode中正確鏈接您的photoImageView IBOutlet。爲了測試目的,我創建了一個鏈接到IBAction的測試按鈕(UIButton)。 UIImageView和測試按鈕(我用IB創建的)都是YourController視圖的子視圖。

請記得將您的圖像導入到您的項目中並釋放內存deallocviewDidUnload

- (dealloc) 
{ 
    [_photoImageView release]; 
    _photoImageView = nil; 

    [super dealloc] 
} 

- (void)viewDidUnload 
{ 
    [super viewDidUnload]; 

    self.photoImageView = nil; 
} 

希望它有幫助。

編輯

的代碼不是圓弧定向但一些修改,有可能還與ARC運行它。

+0

他不想解決這種情況。他只是想明白爲什麼它發生.. !! – samfisher 2012-01-14 16:52:33

+1

@samfisher你是對的!但提供的步驟在我看來是正確的,這可能有助於瞭解正在發生的事情。謝謝。 – 2012-01-15 10:56:11