Обновить / Обновить UITableView при каждом обратном вызове - PullRequest
1 голос
/ 07 февраля 2012

В моем приложении для iOS5 у меня есть UITableView, который будет отображать ячейки на основе значений NSString, хранящихся в progressLabelArray.Я зарегистрировал обратный вызов с моих нижних уровней и получаю их в функции C, откуда мне удается вызвать метод обновления пользовательского интерфейса через ссылку на себя.

    static void callback_handler(int nCode) {
        [refToSelf updateProgressView:nCode];
    }


    -(void) updateProgressView:(int32_t) nCode
    {
        NSString *status = nil;
        status = [self progressUpdateToString:nCode];
        [self.progressLabelArray    insertObject:status atIndex:0];
        [self.progressTableView reloadData];
        [self.progressTableView setNeedsDisplay];
    }

Я полагаю, поскольку обратные вызовыЕсли исходить из того же (поток пользовательского интерфейса), executeSelectorOnMainThread может не потребоваться.

Моя проблема заключается в том, что табличное представление обновляется только после завершения всей операции, показывая значения последнего обратного вызова.Есть ли способ заставить интерфейс обновляться после каждого обратного вызова?Обратные вызовы могут быть относительно быстрыми.

Ответы [ 2 ]

0 голосов
/ 22 января 2017

Поставь свой

tableView.reloadData ()

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

Для быстрой 3:

DispatchQueue.main.async()
{
    tableView.reloadData()
}

Для цели C:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    // Background work
    [tableView reloadData];

});
0 голосов
/ 13 февраля 2012

Решил проблему, запустив код выполнения в отдельном потоке. Обратные вызовы поступают в отдельный поток, и там я обновляю свой основной поток (поток пользовательского интерфейса). Я предполагаю, что поток пользовательского интерфейса не получал никаких циклов для обновления пользовательского интерфейса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...