анимация индикатора активности от выбора ячейки - PullRequest
0 голосов
/ 27 марта 2012

Я удивляюсь, как я могу показать индикатор активности в ячейке с помощью метода didselectCellFromIndexPath?

В основном я хочу запустить анимацию индикатора активности из выбора «Выбрать», а затем получить возврат из своего класса синтаксического анализа.Я бы остановил анимацию и заменил галочкой.но я не уверен, как это сделать внутри метода didselectcell?это код, который я бы использовал.

cellActivityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
        [cell setAccessoryView:cellActivityIndicator];
//then
[cellActivityIndicator startAnimating];
//then
[cellActivityIndicator stopAnimating];

, но мне просто нужен совет по выполнению этого внутри indexPath: didSelectRowAtIndexPath: method

Ответы [ 2 ]

2 голосов
/ 27 марта 2012

В вашем методе didSelectRowAtIndexPath вы можете получить доступ к самой ячейке, используя:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{ 
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];

    //Initialise, add to cell's view and start your activity indicator

    dispatch_async( dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

        //Call your function or whatever work that needs to be done
        //Code in this part is run on a background thread

        dispatch_async(dispatch_get_main_queue(), ^(void) {
            //Stop your activity indicator
            //Code here is run on the main thread
        });
    });
}

Этот метод использует libdispatch / Grand Central Dispatch и требует наличия iOS 4 или выше.

2 голосов
/ 27 марта 2012
dispatch_queue_t queue = dispatch_queue_create("Downloading image", NULL);

dispatch_async(queue, ^{
    NSURL *url = [NSURL URLWithString:@"http://store.storeimages.cdn-apple.com/2441/as-images.apple.com/is/image/AppleInc/step0-edu-pricing?wid=264&hei=144&fmt=png-alpha&qlt=95"];

    cellActivityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
    [cell setAccessoryView:cellActivityIndicator];

    NSData *downloadedImage = download data;

    // update your UI screen
    dispatch_async(dispatch_get_main_queue(), ^{
        [subViewActivityIndicator removeFromSuperview];
        [cell setAccessoryView:something];
    });
});
dispatch_release(queue);
...