0

我在使用 UITableView 时遇到了麻烦,并从它中解脱出来。表格视图包含一个地点列表,当单击一个单元格时,它会转到该地点的照片列表。加载这些照片的信息需要一些时间,所以它会在地点列表上停留一段时间。我的问题是我不想在加载时将用户冻结在应用程序之外,如果用户决定切换他们想要的位置,我希望他们能够这样做。是否有一个简单的解决方案,还是需要重新设计?这是单击单元格时调用的内容:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    self.activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
    [self.activityIndicator startAnimating];
    [[tableView cellForRowAtIndexPath:indexPath] setAccessoryView:self.activityIndicator];
    self.query = ^{return [FlickrFetcher photosInPlace:self.locationDataArray[indexPath.row] maxResults:50];};
    self.locationSelected = [[self.locationDataArray[indexPath.row] valueForKeyPath:@"_content"] componentsSeparatedByString:@","][0];
    [self performSelector:@selector(pushView:) withObject:tableView afterDelay:0.0]; // Allows spinner to start spinning before the segue is actually performed. 
}

- (void)pushView:(UITableView *)tableView {
    [self performSegueWithIdentifier:@"Display Image List" sender:self];
}

我尝试过分派到performSegueWithIdentifire:sender:主队列,但没有运气(无论如何我认为它不会起作用)。查询是目标视图控制器执行的内容。关于如何让它工作的任何想法?

4

2 回答 2

0

我认为,您当然应该在主线程上执行 segue(无调度),并加载一个新的(空)tableview 并在其单元格中启动 activityIndi​​cator。图像的获取将在 viewDidLoad 方法中分派,并“通知”视图,如果加载完成,并重新加载 tableView。

就像在本教程中一样(一个简单的 NSInvocationOperation 用于在后台运行下载): http: //www.icodeblog.com/2010/03/04/iphone-coding-turbo-charging-your-apps-with-nsoperation /

祝你好运!

于 2012-08-02T21:36:11.943 回答
0

我认为您可以为您的照片列表视图设置一个控制器,并且在viewDidLoad该控制器中,您可以使用 Grand Central Dispatch 异步加载您的照片并重新加载表格的数据。

于 2012-08-02T21:37:33.770 回答