Ios 在推送到另一个viewController时加载

Ios 在推送到另一个viewController时加载,ios,objective-c,load,pushviewcontroller,Ios,Objective C,Load,Pushviewcontroller,单击collectionview单元格后,当我按下我的detail View控制器时,加载detailview控制器需要时间。 MainViewController.m -(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{ DetailViewController *objDetailViewController = [sel

单击collectionview单元格后,当我按下我的detail View控制器时,加载detailview控制器需要时间。 MainViewController.m

-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{

    DetailViewController *objDetailViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"DetailViewController"];
    objDetailViewController.objProduct = [arrList objectAtIndex:indexPath.row];
    [self.navigationController pushViewController:objDetailViewController animated:YES];
}
- (void)viewDidLoad {

    [super viewDidLoad];
    [self setInitialValues];
    [self productDetailAPI];//WS CALL

}
detailViewContentRoller.m

-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{

    DetailViewController *objDetailViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"DetailViewController"];
    objDetailViewController.objProduct = [arrList objectAtIndex:indexPath.row];
    [self.navigationController pushViewController:objDetailViewController animated:YES];
}
- (void)viewDidLoad {

    [super viewDidLoad];
    [self setInitialValues];
    [self productDetailAPI];//WS CALL

}

API调用是否在主线程上运行? 您应该在后台线程上进行网络调用,以不阻止UI线程。

如果“productDetilAPI”是一个web请求函数,它将停止UI,如上面的回答所述,因此您应该做的是

[self performSelectorInBackground:@selector(productDetailAPI)
                           withObject:nil];

希望此帮助

将调用viewDidLoad in DetailViewConteroller.m的操作或函数放入nsoperation或@selector