Ios 在推送到另一个viewController时加载
单击collectionview单元格后,当我按下我的detail View控制器时,加载detailview控制器需要时间。 MainViewController.mIos 在推送到另一个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
-(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