2013-11-26 4 views
0

У меня есть карта, которая отображает массив аннотаций, извлеченных из разбора. Каждый из них имеет контроллер подробного представления, который отображает метки, связанные с аннотацией, и я также пытаюсь отобразить изображение, но не могу понять, как это понять. Вот мой текущий кодПоказать изображение через Parse iOS

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    PFObject *gameScore = [PFObject objectWithClassName:@"Arcade"]; 
    self.title = @"Detail View"; 
    PFQuery *query = [PFQuery queryWithClassName:@"Arcade"]; 
    NSString *objectId = gameScore.objectId; 
    [query getObjectInBackgroundWithId:ObjectIdentifier block:^(PFObject *gameScore, NSError *error) { 
     lblTitle.text = pawpost.title; 
     lblPhone.text = pawpost.phone; 
     lblAddress.text = pawpost.address; 
     __block UIImage *MyPicture = [[UIImage alloc]init]; 
     PFFile *imageFile = [gameScore objectForKey:@"image"]; 
     [imageFile getDataInBackgroundWithBlock:^(NSData *data, NSError *error){ 
      if (!error) { 
       MyPicture = [UIImage imageWithData:data]; 

      } 
     }]; 
     imgView.image = MyPicture; 
    }]; 

} 

Это не дает мне какие-либо ошибки, когда я запускаю его, но он просто не отображает .. Есть предложения?

ответ

0

getDataInBackgroundWithBlock выполняется асинхронно и блок, который включает в себя строку:

MyPicture = [UIImage imageWithData:data]; 

, вероятно, закончил после

imgView.image = MyPicture; 

Попробуйте что-то вроде:

[query getObjectInBackgroundWithId:ObjectIdentifier block:^(PFObject *gameScore, NSError *error) { 
    lblTitle.text = pawpost.title; 
    lblPhone.text = pawpost.phone; 
    lblAddress.text = pawpost.address; 
    __block UIImage *MyPicture = [[UIImage alloc]init]; 
    PFFile *imageFile = [gameScore objectForKey:@"image"]; 
    [imageFile getDataInBackgroundWithBlock:^(NSData *data, NSError *error){ 
     if (!error) { 
      MyPicture = [UIImage imageWithData:data]; 
      imgView.image = MyPicture; 
     } 
    }]; 

}]; 
0

мое предложение Загрузка изображения из синтаксиса: используйте imgView в качестве подкласса задницу PFImageView, которая предоставляется Parse для загрузки изображений и назначения изображения. В этом случае, вы можете просто присвоить изображение, как показано ниже:

PFImageView * imgView = [[PFImageView alloc] init];
imgView = [UIImage imageNamed:@"..."]; // placeholder image
imgView.file = [gameScore objectForKey:@"image"];
[imgView loadInBackground];

https://www.parse.com/docs/ios_guide#ui-imageview/iOS

0

Все эти решения являются правильными, но хочу добавить один другой способ иметь поддержку изображений Кэширование SDWebImage или любой библиотека такая.

Я ответил на аналогичный вопрос. посмотреть https://stackoverflow.com/a/28761476/2225439

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