我正在开发一个非常简单的应用程序 带有表视图的导航控制器 当用户点击一行时,他将被定向到详细信息视图。
但是,详细信息视图会从Core Data中提取数据。我正在提取相对大量的数据,大约需要三秒钟才能加载。
我想添加UIActivityIndicatorView来显示进度。
我尝试在用户点击该行后启动动画,因此我将其设置为在didSelectRowAtIndexPath中设置动画
由于某种原因,在推送详细信息视图之前,活动指示器未启动。
知道为什么吗?或实施这种想法的最佳方式?
〜艾德
答案 0 :(得分:3)
因为您启动动画然后在同一个线程中启动一个大型操作。考虑在新线程中运行该3秒操作。查看NSOperationQueue
,然后创建NSOperation
以运行该过程。它将以这种方式工作。
答案 1 :(得分:1)
在运行循环结束之前,UI不会更新。按顺序显示活动监视器,然后按下新表视图,然后 UI更新。您需要更改此订单。
您可以将某些内容移动到另一个线程,也可以通过调用performSelector:afterDelay:
延迟0来延迟加载新的表视图。这会延迟加载新的表视图,直到之后活动指示符出现在UI中。现在,它仍然存在于同一个线程中,因此您将无法执行任何操作,但如果动画在活动监视器中进行了线程化,则可以实现快速简便的解决方案。
答案 2 :(得分:1)
线程中的调用方法:
[NSThread detachNewThreadSelector: @selector(loadMethod) toTarget:self withObject:nil];
有关详细信息,请参阅以下内容:
http://iphone.zcentric.com/?s=UIActivityIndicatorView