UIImageView alloc] initWithImage使用IBOutlet无法正常工作

J W*_*J W 1 iphone uiimageview

我通常遵循在我的方法中创建一个对象的模式(比如viewDidLoad),让属性保持在它上面,然后释放创建的原始对象.所以像这样:

NSArray *myArray = [NSArray alloc] initWithObjects:@"1", @"2", @"3", nil];
self.array = myArray;
[myArray release];
Run Code Online (Sandbox Code Playgroud)

我以为我可以做同样的事情UIImageView.我有一个UIImageView创建我的.xib.我有一个出口,这是一个像这样的财产

@property (nonatomic, retain) IBOutlet UIImageView *imageView;
Run Code Online (Sandbox Code Playgroud)

在我viewDidLoad,我做:

UIImageView *imgView = [[UIImageView alloc] initWithImage;[UIImage imageNamed:@"arrow.png"]];
self.imageView = imgView;
[imgView release];
Run Code Online (Sandbox Code Playgroud)

如果我运行它,我在屏幕上没有任何东西.但是,如果我在我这样做viewDidLoad:

[self.imageView setImage:[UIImage imageNamed:@"arrow.png"]];
Run Code Online (Sandbox Code Playgroud)

我确实在屏幕上显示了我的箭头图像.是否有关于不同的东西UIImageView,我很想念这里?

由于第一次响应而编辑:UIImageView不同于UITableView我需要将其作为子视图添加到当前视图中吗?当我创建一个UITableViewin时IB,我不会将其添加为subviewin viewDidLoad.

谢谢.

NSI*_*Max 5

你错过了IBOutlet工作方式的重点.如果指定了某些东西,.xib那么它已经为你分配了:)你只需要使用它.

因此[self.imageView setImage:[UIImage imageNamed:@"arrow.png"]];,您只需为其分配图像即可.

但是,在做的时候

UIImageView *imgView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"arrow.png"]];
self.imageView = imgView;
[imgView release];
Run Code Online (Sandbox Code Playgroud)

你实际上释放了在该行imageView创建的实例并设置了一个新实例,你也没有将它作为子视图添加到任何东西.因为它是一个新的实例,所以需要添加!! 但无论如何,如果你使用这种方法是错误的IBself.imageView = imgView;IBOutlet