2013-03-06 38 views
0

我在我的视图控制器中插入了一个图像视图,但实际上并不知道如何在其上显示图像。“没有可见的@interface声明选择器”错误

我尝试这样做:

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 


id path = @"http://thestylishdog.com/wp-content/uploads/2009/07/cute-dog2.jpg"; 
NSURL *url = [NSURL URLWithString:path]; 
NSData *data = [NSData dataWithContentsOfURL:url]; 
UIImageView *firstImage = [[UIImage alloc] initWithData:data cache:NO]; 
} 

但接着说,“对UIImage的无可见@interface声明选择initwithData:缓存”

我想加入这行来.h文件,但不不工作:

@property (nonatomic, retain) UIImageView *firstImage; 

我知道最后一步是将该.h创建类分配给viewcontroller中的UIimage。

回答

1

您可以尝试使用此代码从路径在imageview

NSURL *url = [NSURL URLWithString:@"http://thestylishdog.com/wp-content/uploads/2009/07/cute-dog2.jpg"]; 
NSData *data = [NSData dataWithContentsOfURL:url]; 
UIImage *image = [UIImage imageWithData:data]; 
imageView = [[UIImageView alloc] initWithImage:image]; 

不要忘记你的imageView的出口展示给xib如果通过GUI只需添加图像,否则将它添加到您的视图as subview

+0

我不能让它出现在网点为我能够将它拖到在xbi :(我需要合成imageView或什么? – Norm 2013-03-07 00:09:38

+0

您需要拖动UIImageView在xib上,然后使用连接检查器连接它与代码中的位置声明UIImageView作为插座的插座,像这样在你的代码'@property(strong,nonatomic)IBOutlet UIImageView * imageView;' – nsgulliver 2013-03-07 00:11:48

+0

好的谢谢!步骤完成!我得到这个错误,虽然:使用未声明的标识符imageView,你的意思是_imageView。 waat? – Norm 2013-03-07 00:19:15

0

尝试[[UIImage alloc] initWithData:data];您可以使用NSCachedURLResponse来缓存响应。

0

您可以用它来从URL中加载图像:

UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://..."]]]; 
UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; 

但是,这会阻止你的应用程序,直到你的图像加载。在使用网络图像时,最好异步加载图像。如果图像是在不同的线程中下载的,用户可以继续与应用程序进行交互。你可以从Apple检查这个例子中关于延迟加载图片:LazyTableImages

或者你可以检出本教程为异步镜像下载: UItables with downloaded images

+0

谢谢!我尝试了第一部分,但后来我得到:未使用的变量'imageView'。如何将它显示在Outlets中以便能够将它拖到xib文件的uiimageview中? – Norm 2013-03-07 00:14:21

+0

首先,您必须创建一个插座(crtl从xib中的imageview拖动到控制器的.h文件)。然后你创建'UIImage *图像'(第一行)。之后,您只需使用'[imageViewOutlet setImage:image];'将提取的图像设置为出口 – AndrejKolar 2013-03-07 09:10:01

相关问题