UIImageView没有显示图像

时间:2011-01-31 04:12:08

标签: iphone objective-c

我有以下代码:

@interface NeighborProfileViewController : UIViewController {
    UIImageView * profPic;
    UITextView * text;
    UIButton * buzz;
    NSString * uid;
    NSMutableData *responseData;
    NSDictionary * results;
}

@property (nonatomic, retain) IBOutlet UIImageView * profPic;
@property (nonatomic, retain) IBOutlet UITextView * text;
@property (nonatomic, retain) IBOutlet UIButton * buzz;
@property (nonatomic, retain) NSString * uid;

@end

以下是我在viewDidLoad文件<{1}}上的内容

.m

我认为我通过@implementation NeighborProfileViewController @synthesize uid; @synthesize profPic; @synthesize buzz; @synthesize text; // Implement viewDidLoad to do additional setup after loading the view, typically from a nib. - (void)viewDidLoad { [super viewDidLoad]; NSURL *url = //some URL to the picture; NSData *data = [NSData dataWithContentsOfURL:url]; UIImage *img = [[[UIImage alloc] initWithData:data] autorelease]; self.profPic = [[UIImageView alloc] initWithImage: img]; } 正确连接了UIImageView。我有一个从IB到文件所有者的profPic的插座。我做错了什么?

2 个答案:

答案 0 :(得分:13)

如果您要设置默认图片,那么在您致电self.profPic = [UIImageView]后是否仍然可见,或者是否将其从屏幕上移除? 我认为当self.profPic释放旧图像视图以将其替换为您刚刚创建的图像视图时会出现此问题。旧的UIImageView实例以及您在IB中定义的所有属性可能会自动从超级视图中删除。这就是为什么你没有看到下载的图像。

如果您使用IB创建UIImageView,那么您不想创建新的ImageView并将其分配给profPic(已经完全实例化UIImageView })。尝试拨打[profPic setImage:img];,这只会更改profPic图片视图中的图片。

答案 1 :(得分:2)

@Equinox使用

  [profPic setImage:img];

而不是

self.profPic = [[UIImageView alloc] initWithImage: img];

虽然使用自动释放不是问题。 你也可以这样做

  UIImage *img = [[UIImage alloc] initWithData:data] ;
  [profPic setImage:img];
  [img release];

问题

self.profPic = [[UIImageView alloc] initWithImage: img];

您现在正在为profPic创建另一个内存位置,这意味着profPic将不再指向您的IB中的UIImageView