didSelectRowAtIndexPath для вызова нового потока - PullRequest
0 голосов
/ 02 марта 2012

У меня есть этот код для didSelectRowAtIndexPath, но я хочу оптимизировать код для создания нового потока, который передает контроллер представления с моими данными из анализатора JSON.

    #pragma mark - DidselectRow

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    //SPINNER
    [spinner startAnimating];


    //[self performSelector:@selector(pushDetailView:) withObject:tableView afterDelay:0.1];

    /*
    int *riga = indexPath.row;
    [NSThread detachNewThreadSelector:@selector(pushDetailView) toTarget:self withObject:riga];
    */

    NSLog(@"Seleziono l'immagine: %@", [photoTitles objectAtIndex:indexPath.row]);

    //creo un'istanza di DettaglioView
    DettaglioView *dettaglioImmagine = [[DettaglioView alloc] initWithNibName:@"DettaglioView" bundle:nil];



    //Inseirsco il titolo nella Navigation BAR della vista
    dettaglioImmagine.titoloSource = [photoTitles objectAtIndex:indexPath.row];

    dettaglioImmagine.imageCoverSource = [photoURLsLargeImage objectAtIndex:indexPath.row];
    NSLog(@"imageCoverSource: %@",  dettaglioImmagine.imageCoverSource);


    //passo alla vista del DettaglioView con l'animazione usando il pushViewController
    [self.navigationController pushViewController:dettaglioImmagine animated:YES];


    //pulisco lo style della cella selezionata togliendo il fondino blu
    [tableView deselectRowAtIndexPath:indexPath animated:YES];

    //Attivo la vibrazione
    [self buzz];
}

Теперь я хочу создать внешний метод из didSelectRowAtIndexPath для отображения подробного вида следующим образом:

- (void)pushDetailView:(NSInteger *)idRow {

    // Push the detail view here
}

Теперь моя проблема в том, как я могу передать indexPath. метод строки для pushDetailView?

Я пробовал это, но это не работает

int *riga = indexPath.row;
[NSThread detachNewThreadSelector:@selector(pushDetailView) toTarget:self withObject:riga];

Ответы [ 2 ]

0 голосов
/ 02 марта 2012

Вы не можете передать int.вместо int -> nsnumber или nsstring, которые можно сохранить

0 голосов
/ 02 марта 2012

Любые задачи интерфейса пользователя АБСОЛЮТНО ДОЛЖНЫ запускаться в главном потоке. Это не вариант, фоновые манипуляции с пользовательским интерфейсом могут и будут вызывать исключения. Вы должны загрузить свои данные в фоновом режиме, прежде чем помещать новый viewController в основной поток.

...