0

我有此代码用于 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];
4

2 回答 2

0

你不能通过int。而是可以保留的 int -> nsnumber 或 nsstring

于 2012-03-02T19:12:19.053 回答
0

任何用户界面任务都必须在主线程上运行。这不是一个选项,后台 UI 操作可以并且将会引发异常。在主线程上推送新的 viewController 之前,您必须在后台加载数据。

于 2012-03-02T08:08:02.227 回答