2013-03-06 51 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

相關問題