1

我尝试做什么:如果用户按下按钮,则会加载一个新的视图控制器并将其推送到导航控制器。

新的视图控制器正在它的 ViedDidLoad 方法中进行一些硬数据库查询,这会导致加载视图需要几秒钟。

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

如果我尝试在分配新视图之前添加一个 UIActivityIndi​​catorView 作为我的起始视图的子视图,则在新视图完成加载后显示指示器...

我还尝试将数据库查询放在 ViewDidAppear 方法中,但结果相同。

4

2 回答 2

2

看看MBProgressHUD。这真的很容易实现。
主要问题是所有 UI 更改都必须在主线程上完成,因此所有需要相对较长时间的任务都必须在后台线程上完成。
MBProgressHUD 将为您执行此操作。如果要自定义它,只需更改代码即可。

于 2010-03-11T11:34:52.310 回答
0

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

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

于 2010-03-11T09:07:13.330 回答