2010-03-11 61 views
1

我试图做的事情: 如果用户正在按下一个按钮,一个新的视图控制器正在加载并推送到导航控制器。IPhone - 显示等待指示灯

新的视图控制器正在做一些硬数据库查询它的ViedDidLoad方法,导致一些秒加载视图。

我试图在视图开始加载前显示一个等待指示器。

如果我尝试添加UIActivityIndi​​catorView如权利之前被分配的新视图,显示指标后,新观点加载完成后我开始视图的子视图...

我也试图把数据库在ViewDidAppear方法中查询,但具有相同的结果。

回答

0

问题是所有UI更改都必须在应用程序主线程上执行。如果有东西阻塞了主线程,那么不会应用UI更改(在您的情况下不会显示UIActivityIndicatorView)。

要解决您的问题,您必须在后台线程中运行加载数据例程(例如,使用-performSelectorInBackground:withObject方法),从而将主线程留给UI。

2

看一看MBProgressHUD。这很容易实现。
主要问题是所有UI更改都必须在主线程上完成,因此所有需要相对较长时间的任务都必须在后台线程上完成。
MBProgressHUD将为您做到这一点。如果你想定制它,只需更改代码。