0

我不明白为什么我不能从下面的示例中的 url 设置 uimageview:

NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://a4.mzstatic.com/us/r30/Music/08/e9/14/mzi.lmcnwrii.60x60-50.jpg"]];
UIImage *image = [UIImage imageWithData:data];

self.imgAlbum1 = [[UIImageView alloc] initWithImage:image];

通过浏览图像可以正常工作,IBOutlet 可以,即使从 imagenamed 设置 uiimage 也不起作用

我试图在情节提要中重新创建控制,但没有...

任何提示表示赞赏

4

2 回答 2

2

大概imgAlbum1是您现有图像视图的一个出口。

而不是最后一行,它试图创建一个新的图像视图而不在任何地方显示它,你可能想要:

self.imgAlbum1.image = image;
于 2013-06-16T04:07:53.237 回答
1

编辑:如果您imgAlbum1IBOutlet,您可能将其设置为 WEAK 属性。如果是这种情况,图像将永远不会出现。为了使用alloc,您的属性必须是 STRONG 属性。

由于您可能使用的是弱插座,请尝试self.imgAlbum1按照其他海报的建议使用。但是,这会起作用的原因是因为您只是在更新图像,而不是实际的imageView对象(弱属性,当您重新分配时,基本上会完全破坏对象)。

这就是我所做的,我测试过并且工作得很好:

NSString *encodedString = [[NSString stringWithFormat:@"%@", @"us/r30/Music/08/e9/14/mzi.lmcnwrii.60x60-50.jpg"] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

NSURL *imageURL = [NSURL URLWithString:[NSString stringWithFormat:@"http://a4.mzstatic.com/%@", encodedString]];

NSData *data = [NSData dataWithContentsOfURL:imageURL];
UIImage *image = [[UIImage alloc] initWithData:data];

UIImageView *imgAlbum1 = [[UIImageView alloc] initWithImage:image];
[self.view addSubview:imgAlbum1];

所以我的问题是:

  • 您是否为 imgAlbum1 使用 WEAK 属性(即:@property (nonatomic, weak) IBOutlet *imgAlbum1)?如果是这样,请不要将其设置为强 - 而只是使用self.imgAlbum1.image = image;
  • 您是否确保与您使用的设备有互联网连接?
  • imgAlbum1一个IBOutlet到一个UIImageView?如果是这样,它是否被隐藏(或被一层隐藏)?
  • 你在正确的视图控制器上吗?

等等

否则,代码似乎很好。

于 2013-06-16T04:17:24.177 回答