我使用NSFetchedResultsController
填充UITableView
。提取需要一些时间,所以我想在提取正在进行时向用户呈现一个旋转轮。
我该怎么做?
答案 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)