【问题标题】:How to display a progress bar during loading another table view with a table view如何在使用表格视图加载另一个表格视图期间显示进度条
【发布时间】:2012-04-15 15:09:14
【问题描述】:

我有一个表格视图单元格,在单击它时,另一个表格视图将打开,您可以选择一些内容作为表格视图单元格的值。这里的问题是第二个表视图中的数据很大,加载需要很长时间。因此,在我单击单元格后,屏幕将冻结在那里,这对用户不友好。我想在加载第二个表格视图期间显示进度条。但是我找不到添加它的好地方。我想知道我应该在哪种方法中添加代码来显示进度条。

【问题讨论】:

    标签: ios progress-bar loadview


    【解决方案1】:

    在 UITableViewCell 附件视图中显示 UIActivityIndi​​cator (sample image here) 怎么样?

    你可以用一些代码来放置它...

     - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    
         UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
         cell.accessoryView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
     }
    

    您也可以通过调用在后台线程中进行长时间计算

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

    【讨论】:

      【解决方案2】:

      两件事:

      1. 我会认真考虑一个不同的选项而不是进度条,例如尝试MBProgressHUD 之类的东西,它看起来更好,并且适合您的目的。

      2. 为了实现这一点,您必须确保您的 UI 线程没有被卡住(因此应用程序不会“冻结”)——这意味着在后台线程上调用加载过程。启动加载过程的方法应该启动进度指示器,处理显示加载数据的方法(一旦准备好)应该删除它。祝你好运!

      【讨论】:

        【解决方案3】:

        如果您的应用程序冻结,这意味着您正在阻塞 UIThread,就像 @stavash 建议的那样。进度条只是一个动画图像,它不会解决您的问题。您要做的是将“数据准备代码”放入线程中。最简单的方法是使用 Grand Central Dispatch。要开始使用,请访问this tutorial。您可以跳过前半部分并专注于实际的线程块。 API 是dispatch_queue_createdispatch_asyncdispatch_release

        这不会产生进度条。但是,它会解锁您的 UI。然后你可以考虑制作进度条的方法。使用内置动画或一些自定义动画。甚至可以通过后台任务在第一个 tableview 中预加载数据。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-03-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-08-28
          • 2016-11-18
          相关资源
          最近更新 更多