Помощь с NSNotifcation и асинхронной загрузкой
-
13-10-2019 - |
Вопрос
Я отправляю уведомление из одного представления в другой вид. Моя проблема заключается в том, что уведомление в точке зрения, которое я звоню в своем методе CellFororyAtIndexPath, отправляется только при прокрутке TableView. Как я могу остановить это и сделать это отправить уведомление после загрузки изображений? Вот мой код: https://gist.github.com/756302
Спасибо
Мкдев
Решение
Насколько я понимаю ваш код, сообщение запустит перезагрузку всей таблицы. Это должно привести к обновлению клеток.
Таким образом, вам нужно проверить в строке 76, если ячейка нарисована, потому что перезагрузка была запускается из отделки Message (и теперь изображение готово к отображению) или если вам нужно начать асинхронную загрузку изображения Анкет
Первое, что приходит мне в голову, чтобы проверить это, это установить свойство в 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]];
}
...
}
Обратите внимание, что могут быть и другие причины, по которым таблица перезагружается - представление можно было исчезнуть или разгружаться, и вы, возможно, не захотите запускать свою асинхронную загрузку несколько раз.
Другие советы
Ваш код должен работать правильно, когда connectionDidFinishLoading
, вы называете NSNotificationCenter
Чтобы отправить уведомление, в методе Post нет cellForRowAtIndexPath