我为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];
答案 0 :(得分:0)
任何用户界面任务绝对必须在主线程上运行。这不是一个选项,后台UI操作可以并将引发异常。在主线程上推送新的viewController之前,必须在后台加载数据。
答案 1 :(得分:0)
你不能通过int。而是int - >可以保留的nsnumber或nsstring