Помощь с NSNotifcation и асинхронной загрузкой - PullRequest
0 голосов
/ 27 декабря 2010

Я отправляю уведомление из одного представления в другое.Моя проблема в том, что уведомление в представлении, которое я вызываю в моем методе cellForRowAtIndexPath, отправляется только во время прокрутки таблицы.Как я могу остановить это и заставить отправлять уведомление после загрузки изображений?Вот мой код: https://gist.github.com/756302

Спасибо

MKDev

Ответы [ 2 ]

0 голосов
/ 27 декабря 2010

насколько я понимаю твой код, сообщение вызовет перезагрузку всей таблицы.Это должно привести к обновлению клеток.

Таким образом, вам нужно проверить в строке 76, рисуется ли ячейка, потому что перезагрузка была вызвана из сообщения завершения (и изображение теперь готово к отображению), или вам нужно запуститьасинхронная загрузка изображения.

Первое, что мне приходит в голову, чтобы проверить это, это установить свойство в reloadTableView:

- (void)reloadTableView
{
    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"aaa"];
    [[NSNotificationCenter defaultCenter] removeObserver:self name:@"name" object:nil];
    NSLog(@"removeobserver");
    loadImageFinished = YES;
    // if your table has several sections you'll need to adopt the section number 
    NSIndexSet *indices = [[NSIndexSet alloc] initWithIndex:0];
    [self.tableView reloadSections:indices withRowAnimation:UITableViewRowAnimationFade];
    [indices release];
}

, а затем добавить в

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
   ...
   if (loadImageFinished) {
      ... 
   } else {
      [asyncImage loadImageFromURL:[NSURL URLWithString:pathImage]];
   }
   ...
}

Обратите внимание, что могут быть другие причины, по которым таблица перезагружается - представление могло исчезнуть или выгружаться, и вы, возможно, не захотите запускать асинхронную загрузку несколько раз.

0 голосов
/ 27 декабря 2010

Ваш код должен работать правильно, когда connectionDidFinishLoading, вы вызываете NSNotificationCenter для отправки уведомления, в cellForRowAtIndexPath

нет метода post
...