2015-03-26 3 views
0

Я хотел бы сделать SVProgressHUD с разоблачением запросfindObjectsInBackgroundWithBlock. Когда я тестирую, хед уходит через 1 секунду после появления представления.SVProgressHUD с запросом findObjectsInBackgroundWithBlock?

Как я могу сделать, что HUD пребывание в конце запроса (я знаю, что это фон запрос ...):/

Что я делаю неправильно?

Любая идея?

Вот мой код:

-(void) viewWillAppear:(BOOL)animated{ 
    [super viewWillAppear:animated]; 
    [SVProgressHUD showWithMaskType:SVProgressHUDMaskTypeGradient]; 
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
     // time-consuming task 
     [self loadShop]; 
      dispatch_async(dispatch_get_main_queue(), ^{ 
       [SVProgressHUD dismiss]; 
      }); 
    }); 
} 

и метод:

-(void)loadShop { 
    // Configure Shop with Parse DB 
    PFQuery *presentationText = [PFQuery queryWithClassName:@"presentationText"]; 
    [presentationText findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) { 
     if (!error) { 
      self.presentationText.text = [[objects valueForKey:@"Text" ] objectAtIndex:0]; 
     }}]; 

    PFQuery *categoryQuery = [PFQuery queryWithClassName:@"Category"]; 
    [categoryQuery findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) { 
     if (!error) { 
      self.categoryLabel.text = [[objects valueForKey:@"Text" ] objectAtIndex:0]; 
      self.categoryLabel2.text = [[objects valueForKey:@"Text" ] objectAtIndex:1]; 
     }}]; 

    PFQuery *descriptionLabel = [PFQuery queryWithClassName:@"descriptionLabel"]; 
    [descriptionLabel findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) { 
     if (!error) { 
      self.descriptionLabel.text = [[objects valueForKey:@"Text" ] objectAtIndex:3]; 
      self.descriptionLabel2.text = [[objects valueForKey:@"Text" ] objectAtIndex:0]; 
      self.descriptionLabel3.text = [[objects valueForKey:@"Text" ] objectAtIndex:1]; 
      self.descriptionLabel4.text = [[objects valueForKey:@"Text" ] objectAtIndex:2]; 
     }}]; 

    PFQuery *priceLabel = [PFQuery queryWithClassName:@"priceLabel"]; 
    [priceLabel findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) { 
     if (!error) { 
      self.priceLabel.text = [[objects valueForKey:@"Text" ] objectAtIndex:0]; 
      self.priceLabel2.text = [[objects valueForKey:@"Text" ] objectAtIndex:1]; 
      self.priceLabel3.text = [[objects valueForKey:@"Text" ] objectAtIndex:2]; 
      self.priceLabel4.text = [[objects valueForKey:@"Text" ] objectAtIndex:3]; 
     }}]; 


    PFQuery *urlImage = [PFQuery queryWithClassName:@"urlImage"]; 
    [urlImage findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) { 
     if (!error) { 
      self.imageButtonURL = [[objects valueForKey:@"URL" ] objectAtIndex:0]; 
      self.imageButtonURL2 = [[objects valueForKey:@"URL" ] objectAtIndex:1]; 
      self.imageButtonURL3 = [[objects valueForKey:@"URL" ] objectAtIndex:2]; 
      self.imageButtonURL4 = [[objects valueForKey:@"URL" ] objectAtIndex:3]; 
      imageButtonData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:self.imageButtonURL]]; 
      self.imageButton.imageView.image = [UIImage imageWithData: imageButtonData]; 

      imageButtonData2 = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:self.imageButtonURL2]]; 
      self.imageButton2.imageView.image = [UIImage imageWithData: imageButtonData2]; 

      imageButtonData3 = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:self.imageButtonURL3]]; 
      self.imageButton3.imageView.image = [UIImage imageWithData: imageButtonData3]; 

      imageButtonData4 = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:self.imageButtonURL4]]; 
      self.imageButton4.imageView.image = [UIImage imageWithData: imageButtonData4]; 
     }}]; 
} 
+0

Вы используете блоки из разбора. Запустите SVProgressHUD перед тем, как вы извлечете объекты. Прекратите, когда закончите. – Anton

+0

@ Антон Это не то, что я здесь делаю? Я запускаю [SVProgressHUD showWithMaskType: SVProgressHUDMaskTypeGradient]; перед извлечением объектов: запуск моего метода loadShop ... нет? –

+0

Создать отдельную функцию с вашим ходом прогресса начинается со всех настроек внутри. Запустите его до запуска fetch и просто остановите его, когда закончите. – Anton

ответ

1

вы используете блоки из синтаксического анализа. Запустите SVProgressHUD перед тем, как вы извлечете объекты. Прекратите, когда закончите.

пример:

PFQuery *priceLabel = [PFQuery queryWithClassName:@"priceLabel"]; 
//SVProgressHUD starts 
    [priceLabel findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) { 
     if (!error) { 
      self.priceLabel.text = [[objects valueForKey:@"Text" ] objectAtIndex:0]; 
      self.priceLabel2.text = [[objects valueForKey:@"Text" ] objectAtIndex:1]; 
      self.priceLabel3.text = [[objects valueForKey:@"Text" ] objectAtIndex:2]; 
      self.priceLabel4.text = [[objects valueForKey:@"Text" ] objectAtIndex:3]; 
//SVProgressHUD stops 
     }}]; 

Таким образом, вы могли бы начать, когда вид появится и остановить его после того, как последний запрос сделал.

+0

Хорошо, я проверю это сейчас! :) спасибо –

+0

О, мужчина, спасибо !!! –

+0

u приветствуются :) – Anton

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