2

我正在开发一个非常简单的应用程序,它是一个带有表格视图的导航控制器,当用户单击一行时,他会被定向到详细信息视图。

但是,详细信息视图从 Core Data 中提取数据。我正在提取相对大量的数据,加载大约需要三秒钟。

我想添加那个 UIActivityIndi​​catorView 来显示进度。

一旦用户单击该行,我就尝试启动动画,因此我将其设置为在 didSelectRowAtIndexPath 中进行动画处理

由于某种原因,活动指示器不会在详细信息视图的推送之前启动。

知道为什么吗?还是实现这种想法的最佳方式?

~阿达姆

4

3 回答 3

3

因为你启动动画然后在同一个线程中启动一个大的操作。考虑在新线程中运行该 3 秒操作。查看NSOperationQueue然后创建一个NSOperation来运行该过程。它将以这种方式工作。

于 2009-11-13T23:40:26.700 回答
1

UI 在运行循环结束之前不会更新。您将依次显示活动监视器,然后推送新的表格视图,然后更新 UI。您需要更改此顺序。

您可以将某些内容移动到不同的线程,或者您可以通过调用performSelector:afterDelay:延迟为 0 来延迟新表视图的加载。这将延迟新表视图的加载,直到活动指示器出现在 UI 中之后。现在,它仍然在同一个线程上,所以你会被阻止做任何事情,但是如果动画在活动监视器中线程化,它会是一个快速简单的解决方案。

于 2009-11-13T23:42:35.880 回答
1

在线程中调用方法:

[NSThread detachNewThreadSelector: @selector(loadMethod) toTarget:self withObject:nil];

有关详细信息,请参阅以下内容:http: //iphone.zcentric.com/?s=
UIActivityIndi​​catorView

于 2009-11-24T11:25:32.657 回答