2013-03-06 2 views
0

Я вставил изображение в свой контроллер, но не знаю, как отображать на нем изображение.«No visible @interface объявляет селектор» error

Я попытался это:

- (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]; 
} 

Но он говорит, что «Нет видимых @interface для UIImage заявляет селектор initwithData: кэш»

Я пытался добавить эту строку в файл .h, но делает не работает либо:

@property (nonatomic, retain) UIImageView *firstImage; 

Я знаю, что последний шаг должен был бы назначить, что .h создать класс для UIImage в ViewController.

ответ

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 в противном случае добавьте его в целях как subview

+0

Я не могу заставить его появиться на выходах для меня, чтобы быть в состоянии перетащить его в xbi :(мне нужно синтезировать imageView или что-то в этом роде? – Norm

+0

вам нужно перетащить UIImageView на xib, а затем с помощью инспектора подключений подключить его к розетке в коде, где вы объявляете UIImageView как выход, что-то вроде этого в вашем code '@property (сильный, неатомный) IBOutlet UIImageView * imageView;' – nsgulliver

+0

Хорошо, спасибо! Шаги сделаны! Я получаю эту ошибку: использование необъявленного идентификатора imageView, вы имели в виду _imageView. waat? – Norm

0

Попробуйте [[UIImage alloc] initWithData:data];, вы можете кэшировать с помощью NSCachedURLResponse для ответа.

0

Вы можете использовать эту функцию для загрузки изображений с URL-адресов:

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

Но это не будет блокировать приложение до ваших нагрузок изображения. Лучше всего загружать изображения асинхронно при использовании изображений из Интернета. Если изображения загружаются в другом потоке, пользователь может поддерживать взаимодействие с приложением. Вы можете проверить этот пример из яблока о ленивых образах загрузки: LazyTableImages

Или вы можете оформить этот учебник для скачивания асинхронного изображения: UItables with downloaded images

+0

спасибо! Я пробовал первую часть, но потом получаю: Неиспользуемая переменная 'imageView'. Как я могу отобразить его в Outlets, чтобы перетащить его в uiimageview в файле xib? – Norm

+0

Сначала вам нужно создать выход (crtl перетащить из изображения в xib в файл .h) контроллера.Затем вы создаете изображение 'UIImage * '(первая строка). После этого вы просто устанавливаете извлеченное изображение в розетку с помощью '[imageViewOutlet setImage: image];' – AndrejKolar

Смежные вопросы