Вопрос

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

Моя проблема в том, что я использую afnetworking, и я использую этот блок-код:

[Request fullRequestWithBlock:^(NSArray *detailedReqFromWeb, NSError *error) {
        if (error) {

            [[[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Error", nil) message:[error localizedDescription] delegate:nil cancelButtonTitle:nil otherButtonTitles:NSLocalizedString(@"OK", nil), nil] show];
        } else {

            NSArray *objs = [NSArray arrayWithObjects: [detailedReqFromWeb objectAtIndex: 0], [detailedReqFromWeb objectAtIndex: 1], [detailedReqFromWeb objectAtIndex: 2], [detailedReqFromWeb objectAtIndex: 3], [detailedReqFromWeb objectAtIndex: 4], [detailedReqFromWeb objectAtIndex: 5], nil];
            NSArray *keys = [NSArray arrayWithObjects:@"Risk", @"Destination", @"Source", @"Customer", @"Subcategory", @"Deployment", nil];

            NSMutableDictionary *detailsforRequestDictionary = [[NSMutableDictionary alloc] initWithObjects:objs forKeys:keys];

            [request addEntriesFromDictionary: detailsforRequestDictionary];

            NSLog(@"%@ Finished Loading", [idNumbers objectAtIndex:row]);
            cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;

        }

    } forID: [[idNumbers objectAtIndex:row] substringFromIndex:1]];
.

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

Моя проблема заключается в том, что она меняется в Cell.accessorytype к кнопке до того, как она закончила загрузку.DEBUG NSLOG на самом деле выводит, когда она на самом деле заканчивает загрузку.

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

Спасибо!

Это было полезно?

Решение

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top