Перерисовать UITableViewCell после рисования - PullRequest
1 голос
/ 06 сентября 2011

Я добавляю «тянуть, чтобы загрузить больше» в UITableView. У меня работает перезагрузка, и я могу добавить больше данных, но я пытаюсь отобразить UIActivityIndicatorView при загрузке данных. Мне удалось заставить текущий аксессуар исчезнуть, но я не могу заставить индикатор активности рисовать сам.

Это код, который я имею в своем подклассе UITableViewCell:

-(void) toggleLoading:(bool)showLoading {
    if(showLoading) {
        [self.accessoryView setHidden:true];
        isLoading = false;
    } else {
        UIActivityIndicatorView *spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
        spinner.frame = CGRectMake(0, 0, 24, 24);
        self.accessoryView = spinner;
        [spinner startAnimating];
        [spinner release];
        isLoading = true;
        [self.backgroundView setNeedsDisplay];
    }
}

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

Ответы [ 2 ]

0 голосов
/ 25 февраля 2012

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

0 голосов
/ 06 сентября 2011

Разве вы не должны рисовать счетчик в didSelectRowAtIndexPath?

Кстати, я бы использовал:

[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
...