2015-07-17 3 views
1

Есть ли способ вызова делегатов и источника данных в главном центральном диспетчерском диспетчерском?Методы делегатов и источников данных, которые не называются

Пожалуйста, помогите. Если эти делегаты и источник данных не будут вызваны, мои изображения не будут отображаться!

Вот код:

messageWebService = [[MessageWebServices alloc]init]; 
    tempBO = [[MessageBO alloc]init]; 
    tempBO.messageId = self.messageID; 
    dispatch_async(webServiceBackGroundQueue, ^(void){ 

     tempBO = [messageWebService getDetails:tempBO]; 
     dispatch_async(dispatch_get_main_queue(),^
     { 

      if (!tempBO.isException) 
      { 
       self.subjects.text = tempBO.subject; 
       self.content.text = tempBO.messageli; 
       self.userNmae.text = tempBO.userNmae; 
       self.creaDAte.text = tempBO.creationDate; 
       self.phoneNumb.text = tempBO.phoneNumber; 
       self.eMail.text = tempBO.email; 
       self.amount.text = [NSString stringWithFormat:@"$ %@",tempBO.priceAmount]; 
       self.imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:tempBO.imageURL]]; 
       self.img = [UIImage imageWithData:self.imageData]; 
       if(self.img) 
       { 
        [imageArray addObject:self.img]; 
       } 
       else 
       { 
        [imageArray addObject:[UIImage imageNamed:@"no_photo.png"]]; 
       } 
       hFlowView.delegate = self; 
       hFlowView.dataSource = self; 
       hFlowView.pageControl = hPageControl; 


      } 



     }); 
    }); 
+0

Вы можете объяснить более подробно ?? его надежду возможно .... –

+0

почему вы должны назвать это внутри GCD? –

+0

Я использую стороннюю библиотеку под названием pagedFlowView. Внутри этого изображения есть вид, и он имеет свои собственные методы делегирования и источника данных. ЕСЛИ эти методы не вызывают, ImageView всегда пуст. Все изображения получены из веб-служб. – sam24

ответ

1

Вы не можете напрямую вызвать метод delegate/datasource, но вы можете вызвать поддерживающие методы, которые вызовут методы делегата или источника данных. Для примера. Для табличного представления - если вы вызываете reload table view, вызывается источник данных и методы делегата, связанные с перезагрузкой таблицы.

Но в случае GCD, только если объект соответствующего класса находится в области действия, они отражают изменение. Или это будет бесполезно.

Просьба представить дополнительную информацию о вашем конкретном сценарии/коде, чтобы мы могли более точно ориентировать вас.

+0

Вот код, который я использую – sam24

+0

Пожалуйста, проверьте код, который я добавил – sam24

+0

Спасибо. Я просмотрел код в сторонней библиотеке и нашел вызов [reloadData]. Теперь все работает. :) – sam24

0

Вы можете поместить любой код в НОД блоке. Однако будьте осторожны, пока объект, объект-делегат и объект источника данных все еще находятся в области действия при выполнении блока. Возможно, вам придется переместить локальную переменную (например) как переменную-член.

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