iOS:在NSFetchResultsController执行提取时呈现旋转轮

时间:2012-05-10 09:35:15

标签: ios nsfetchedresultscontroller

我使用NSFetchedResultsController填充UITableView。提取需要一些时间,所以我想在提取正在进行时向用户呈现一个旋转轮。

我该怎么做?

3 个答案:

答案 0 :(得分:3)

你应该在主线程中启动你的微调器并推动辅助线程的“繁重工作”。完成工作后,停止微调器。你可以通过以下方式实现这一目标:

    // Start the spinning here.
    [mySpinner startAnimating];
    // Declare the queue
    dispatch_queue_t workingQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
    // it's not, so we will start a background process to calculate it and not block the UI
    dispatch_async(workingQueue, 
                   ^{
                      // Some heavy work here.

                       dispatch_async(dispatch_get_main_queue(), ^{ 
                          // stop the spinner here
                          [mySpinner stopAnimating];
                       });
                   });

在主线程中执行以下操作不会让您完成您想要的任务:

Start Spinner => Heavy work => Stop Spinner

当Heavy工作开始时,它会阻止你的UI线程,所以你实际上不会看到UIActivityMonitor动画。

要完成,我会建议您使用this作为微调器。

答案 1 :(得分:0)

你有几种方法可以做到这一点:

如果您使用UINavigationBar并在函数开头将customView设置为UIBarItem并将其隐藏到结尾,则

有一个UIActivityIndicator

在视图的中心创建一个“模态”视图,其中UIActivityIndicator,并将此子视图添加到表格视图中,并将其移除到函数末尾。

答案 2 :(得分:0)

正式上你可以使用UIActivityIndi​​catorView来呈现轮子,并且使用来自here的MBHoods下载演示应用程序here