我尝试做什么: 如果用户按下按钮,则会加载新的视图控制器并将其推送到导航控制器。
新的视图控制器在它的ViedDidLoad方法中进行一些硬数据库查询,这会导致几秒钟的时间来加载视图。
我正在尝试在视图开始加载之前显示等待指示符。
如果我在分配新视图之前尝试添加UIActivityIndicatorView作为我的起始视图的子视图,则在新视图加载完成后显示指示符...
我还尝试将数据库查询放在ViewDidAppear方法中,但结果相同。
答案 0 :(得分:2)
看看MBProgressHUD。这很容易实现。
主要问题是所有UI更改必须在主线程上完成,因此所有需要相对较长时间的任务必须在后台线程上完成。
MBProgressHUD会为你做这个。如果您想自定义它,只需更改代码即可。
答案 1 :(得分:0)
问题是必须在应用程序主线程上执行所有UI更改。如果某些东西阻塞主线程,则不会应用UI更改(在您的情况下不会显示UIActivityIndicatorView
)。
要解决您的问题,您必须在后台线程中运行加载数据例程(例如使用-performSelectorInBackground:withObject
方法),将主线程留给UI。