0

好的,我的第一个控制器是一个 UITabel,当传递一个单元格时,它会推送到第二个视图控制器。第二个控制器从 web 服务加载数据,因此 segue 需要一点时间。我想在选择单元格时显示一个 SVProgressHUD,然后在加载数据后将其关闭,但 SVProgressHUD 在第二个视图加载后显示,并且只显示几毫秒。我现在使用这个:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    [SVProgressHUD show];
    UITableViewCell *acell = [tableView cellForRowAtIndexPath:indexPath];
    [self performSegueWithIdentifier:@"pushCell" sender:acell];
}

选择单元格时,有什么方法可以立即显示 SVProgressHUD?

4

1 回答 1

4

Apple 建议当用户单击 tableViewCell 时,应用程序应立即转到下一个视图控制器。您觉得在加载下一个视图时需要显示 SVProgressHUD 的事实向我表明您正在使用同步方法请求数据,这将阻塞主线程并使其看起来您的应用程序在等待时已冻结回复。

检索数据的最佳做法是始终异步(或在后台线程上)执行此操作,以便您的应用始终保持响应。我建议将您的请求更改为异步方法(initWithRequest:delegate:例如,查看 NSURLRequest 方法)。如果您使用它,您可以在第二个控制器的 viewDidLoad 方法中显示 SVProgressHUD,当用户点击表格单元格时,将立即转换到第二个视图控制器,并且您的应用程序不会在用户等待时被锁定要下载的数据。

以下是Apple 文档中有关此方法的更多信息

于 2012-08-19T02:53:07.350 回答