无法更改UIImageView的图像

use*_*293 4 uiimageview ios

.H

IBOutlet UIImageView *photoImageView;
UIImage *photo;
Run Code Online (Sandbox Code Playgroud)

.m(在viewWillAppear中)

photoImageView.image = photo;
Run Code Online (Sandbox Code Playgroud)

视图出现后,我无法改变photoImageView使用:

photoImageView.image = [UIImage imageNamed:@"XXX.png"];
Run Code Online (Sandbox Code Playgroud)

但改变了photo作品的价值.

photo = [UIImage imageNamed:@"XXX.png"];
Run Code Online (Sandbox Code Playgroud)

它是如何工作的?

Lor*_*o B 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"];
}
Run Code Online (Sandbox Code Playgroud)

一些笔记.

首先,您必须photoImageView在XCode中正确链接您的IBOutlet.出于测试目的,我创建了一个UIButton链接到的测试按钮()IBAction.的UIImageView和测试按钮(I创建都与IB)是儿童的YourController图.

请记住将图像导入项目并在其中dealloc和内部释放内存viewDidUnload.

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

   [super dealloc]
}

- (void)viewDidUnload
{
   [super viewDidUnload];

   self.photoImageView = nil;
}
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你.

编辑

代码不是面向ARC的,但几乎没有修改,也可以使用ARC运行它.