0

我有一个tableview与响应detialview。在detailview我有一些从URL加载的图像和实验室。我正在尝试添加一个UIActivityindicatorview到单元格以显示正在加载。我已经解决了这个问题,但是现在已经显示出来,并且在我回到tableview时并没有消失。我已经找遍各地寻找一个简单的解决方案,但失败...tableviewcell中的UIActivityIndi​​cator在加载detailview时显示延迟?

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

ReaDetailViewController *reaDetail = [[ReaDetailViewController alloc] initWithNibName:@"ReaDetailViewController" bundle:nil]; 

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 

UIActivityIndicatorView *activityView = 
[[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; 
[activityView startAnimating]; 
[cell setAccessoryView:activityView]; 
[activityView release]; 

[self.tableView deselectRowAtIndexPath:[self.tableView indexPathForSelectedRow] animated:YES]; 

    { 
    reaDetail.petImageString = [[NSString alloc] initWithString:[[exclusiveArray objectAtIndex:indexPath.row] objectForKey:@"image"]]; 

    reaDetail.petLabelString = [[NSString alloc] initWithString:[[exclusiveArray objectAtIndex:indexPath.row] objectForKey:@"description"]]; 

    reaDetail.petLabelString1 = [[NSString alloc] initWithString:[[exclusiveArray objectAtIndex:indexPath.row] objectForKey:@"description1"]]; 

    reaDetail.petLabelString2 = [[NSString alloc] initWithString:[[exclusiveArray objectAtIndex:indexPath.row] objectForKey:@"description2"]]; 





    reaDetail.title = [[exclusiveArray objectAtIndex:indexPath.row] objectForKey:@"name"]; 
} 


// Pass the selected object to the new view controller. 
[self.navigationController pushViewController:reaDetail animated:YES]; 
[reaDetail release]; 


    } 

任何帮助是非常有益的!

回答

0

我知道您希望在加载视图控制器时使活动视图变成动画。问题是活动视图不会开始动画,直到您从这个选择方法返回时...这是您的控制器准备推入的时间。

2个选项,则:

  • 你可以从你尽快的方法退出,呼吁perfomSelector:onMainThread做视图控制器的初始化步骤被推
  • 甚至更​​好,尽快推视图控制器,并在此控制器的viewDidLoadviewWillAppear方法中执行初始化过程(可以在此新视图中添加活动控制器)。

如果你选择了第一种选择,你应该调用deselectRowAtIndexPath方法你推新视图控制器后从该deselectRowAtIndexPath方法指示灯查看通话stopAnimating